From 2af3648682594041948fd55c191cd7071da6b281 Mon Sep 17 00:00:00 2001 From: Sdogruyol Date: Sun, 17 Jan 2016 13:08:12 +0200 Subject: [PATCH 1/3] Make logger configurable --- spec/macros_spec.cr | 7 +++++++ src/kemal.cr | 14 +++++++++----- src/kemal/config.cr | 3 ++- src/kemal/macros.cr | 5 +++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/spec/macros_spec.cr b/spec/macros_spec.cr index cceed89..9d3b3a7 100644 --- a/spec/macros_spec.cr +++ b/spec/macros_spec.cr @@ -21,4 +21,11 @@ describe "Macros" do Kemal.config.handlers.size.should eq 1 end end + + describe "#logging" do + it "sets logging status" do + logging false + Kemal.config.logging.should eq false + end + end end diff --git a/src/kemal.cr b/src/kemal.cr index 5431303..eaab7a7 100644 --- a/src/kemal.cr +++ b/src/kemal.cr @@ -4,18 +4,22 @@ require "./kemal/middleware/*" at_exit do Kemal::CLI.new config = Kemal.config - logger = Kemal::Logger.new - config.add_handler logger + if config.logging + logger = Kemal::Logger.new + config.add_handler logger + logger.write "[#{config.env}] Kemal is ready to lead at #{config.scheme}://#{config.host_binding}:#{config.port}\n" + Signal::INT.trap { + logger.write "Kemal is going to take a rest!\n" + logger.handler.close + } + end config.add_handler Kemal::StaticFileHandler.new(config.public_folder) config.add_handler Kemal::Handler::INSTANCE server = HTTP::Server.new(config.host_binding.not_nil!.to_slice, config.port, config.handlers) server.ssl = config.ssl - logger.write "[#{config.env}] Kemal is ready to lead at #{config.scheme}://#{config.host_binding}:#{config.port}\n" Signal::INT.trap { - logger.write "Kemal is going to take a rest!\n" - logger.handler.close server.close exit } diff --git a/src/kemal/config.cr b/src/kemal/config.cr index 0e9afec..ea93802 100644 --- a/src/kemal/config.cr +++ b/src/kemal/config.cr @@ -4,13 +4,14 @@ module Kemal class Config INSTANCE = Config.new HANDLERS = [] of HTTP::Handler - property host_binding, ssl, port, env, public_folder + property host_binding, ssl, port, env, public_folder, logging def initialize @host_binding = "0.0.0.0" unless @host_binding @port = 3000 @env = "development" unless @env @public_folder = "./public" + @logging = true end def scheme diff --git a/src/kemal/macros.cr b/src/kemal/macros.cr index 3bea929..2a9b8b3 100644 --- a/src/kemal/macros.cr +++ b/src/kemal/macros.cr @@ -41,3 +41,8 @@ end macro log(message) Kemal::Logger::INSTANCE.write "#{{{message}}}\n" end + +# Enables / Disables logging +macro logging(status) + Kemal.config.logging = {{status}} +end From 51092fbb91cb941df0ef248d0618d528505f2ca0 Mon Sep 17 00:00:00 2001 From: Sdogruyol Date: Sun, 17 Jan 2016 14:17:27 +0200 Subject: [PATCH 2/3] Move logger to config --- src/kemal.cr | 10 ++++------ src/kemal/config.cr | 9 +++++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/kemal.cr b/src/kemal.cr index eaab7a7..c4b524c 100644 --- a/src/kemal.cr +++ b/src/kemal.cr @@ -6,12 +6,8 @@ at_exit do config = Kemal.config if config.logging logger = Kemal::Logger.new - config.add_handler logger - logger.write "[#{config.env}] Kemal is ready to lead at #{config.scheme}://#{config.host_binding}:#{config.port}\n" - Signal::INT.trap { - logger.write "Kemal is going to take a rest!\n" - logger.handler.close - } + config.logger = logger + config.logger.write "[#{config.env}] Kemal is ready to lead at #{config.scheme}://#{config.host_binding}:#{config.port}\n" end config.add_handler Kemal::StaticFileHandler.new(config.public_folder) config.add_handler Kemal::Handler::INSTANCE @@ -20,6 +16,8 @@ at_exit do server.ssl = config.ssl Signal::INT.trap { + config.logger.write "Kemal is going to take a rest!\n" + config.logger.handler.close server.close exit } diff --git a/src/kemal/config.cr b/src/kemal/config.cr index ea93802..6a62ae1 100644 --- a/src/kemal/config.cr +++ b/src/kemal/config.cr @@ -22,6 +22,15 @@ module Kemal HANDLERS end + def logger + @logger + end + + def logger=(logger) + HANDLERS << logger + @logger = logger + end + def add_handler(handler : HTTP::Handler) HANDLERS << handler end From 0498801b0d3a98df7b4baa9a4d4d4943496630a7 Mon Sep 17 00:00:00 2001 From: Sdogruyol Date: Sun, 17 Jan 2016 14:22:47 +0200 Subject: [PATCH 3/3] Initialize logger in config --- src/kemal/config.cr | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/kemal/config.cr b/src/kemal/config.cr index 6a62ae1..0ede00f 100644 --- a/src/kemal/config.cr +++ b/src/kemal/config.cr @@ -12,6 +12,7 @@ module Kemal @env = "development" unless @env @public_folder = "./public" @logging = true + @logger = nil end def scheme @@ -23,7 +24,7 @@ module Kemal end def logger - @logger + @logger.not_nil! end def logger=(logger)