From a5e2060e3ab8e7b7d8b2d48c546e5523a782fc03 Mon Sep 17 00:00:00 2001 From: Alex Moinet Date: Wed, 28 Mar 2018 10:47:30 +0100 Subject: [PATCH] feature(logging): Ensure logged messages are formatted correctly - Removed 'format_message' method - Re-added formatter utilising progname for Bugsnag stamp - Added PROG_NAME const for logging program name --- lib/bugsnag/configuration.rb | 17 ++++++-------- spec/configuration_spec.rb | 43 ++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/lib/bugsnag/configuration.rb b/lib/bugsnag/configuration.rb index a60b93725..b0e756a62 100644 --- a/lib/bugsnag/configuration.rb +++ b/lib/bugsnag/configuration.rb @@ -41,6 +41,7 @@ class Configuration THREAD_LOCAL_NAME = "bugsnag_req_data" DEFAULT_ENDPOINT = "https://notify.bugsnag.com" DEFAULT_SESSION_ENDPOINT = "https://sessions.bugsnag.com" + PROG_NAME = "[BUGSNAG]" DEFAULT_META_DATA_FILTERS = [ /authorization/i, @@ -88,6 +89,9 @@ def initialize # Set up logging self.logger = Logger.new(STDOUT) self.logger.level = Logger::INFO + self.logger.formatter = proc do |severity, datetime, progname, msg| + "** #{progname} #{datetime}: #{msg}\n" + end # Configure the bugsnag middleware stack self.internal_middleware = Bugsnag::MiddlewareStack.new @@ -166,26 +170,19 @@ def clear_request_data ## # Logs an info level message def info(message) - logger.info(format_message(message)) + logger.info(PROG_NAME) { message } end ## # Logs a warning level message def warn(message) - logger.warn(format_message(message)) + logger.warn(PROG_NAME) { message } end ## # Logs a debug level message def debug(message) - logger.debug(format_message(message)) - end - - ## - # Formats a message being logged by Bugsnag - def format_message(message) - datetime = Time.new.to_s - "** [Bugsnag] #{datetime}: #{message}\n" + logger.debug(PROG_NAME) { message } end private diff --git a/spec/configuration_spec.rb b/spec/configuration_spec.rb index 615c879d4..e80cc224f 100644 --- a/spec/configuration_spec.rb +++ b/spec/configuration_spec.rb @@ -37,46 +37,45 @@ def initialize @logs = [] end - def log(level, message) + def log(level, name, &block) + message = block.call @logs << { :level => level, + :name => name, :message => message } end - def info(msg) - log('info', msg) + def info(name, &block) + log('info', name, &block) end - def warn(msg) - log('warning', msg) + def warn(name, &block) + log('warning', name, &block) end - def debug(msg) - log('debug', msg) + def debug(name, &block) + log('debug', name, &block) end end before do @logger = TestLogger.new - @string_regex = /\*\* \[Bugsnag\] (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} (\+\d{4})?): (Info|Warning|Debug) message\n$/ Bugsnag.configure do |bugsnag| bugsnag.logger = @logger end end - it "should format a message correctly" do - formatted_msg = /\*\* \[Bugsnag\] (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} (\+\d{4})?): message\n$/ - expect(Bugsnag.configuration.format_message("message")).to match(formatted_msg) - end - it "should log info messages to the set logger" do expect(@logger.logs.size).to eq(0) Bugsnag.configuration.info("Info message") expect(@logger.logs.size).to eq(1) log = @logger.logs.first - expect(log[:level]).to eq('info') - expect(log[:message]).to match(@string_regex) + expect(log).to eq({ + :level => "info", + :name => "[BUGSNAG]", + :message => "Info message" + }) end it "should log warning messages to the set logger" do @@ -84,8 +83,11 @@ def debug(msg) Bugsnag.configuration.warn("Warning message") expect(@logger.logs.size).to eq(1) log = @logger.logs.first - expect(log[:level]).to eq('warning') - expect(log[:message]).to match(@string_regex) + expect(log).to eq({ + :level => "warning", + :name => "[BUGSNAG]", + :message => "Warning message" + }) end it "should log debug messages to the set logger" do @@ -93,8 +95,11 @@ def debug(msg) Bugsnag.configuration.debug("Debug message") expect(@logger.logs.size).to eq(1) log = @logger.logs.first - expect(log[:level]).to eq('debug') - expect(log[:message]).to match(@string_regex) + expect(log).to eq({ + :level => "debug", + :name => "[BUGSNAG]", + :message => "Debug message" + }) end after do