diff --git a/CHANGELOG.md b/CHANGELOG.md index 4945b32..9a6835c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog for the JSON Rails Logger gem +## 2.2.0 - 2025-09 + +- Enhanced status and request type parsing logic +- Added handling to skip formatting when optional data missing +- Included checks for log message prefixes +- Added debug log statements (commented out) for easier tracing + ## 2.1.0 - 2025-09 - Updated ruby version and dependency versions to latest compatible releases diff --git a/Gemfile.lock b/Gemfile.lock index cbab2ab..77fc2fd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,7 +10,7 @@ GIT PATH remote: . specs: - json_rails_logger (2.1.0) + json_rails_logger (2.2.0) json lograge railties diff --git a/lib/json_rails_logger/json_formatter.rb b/lib/json_rails_logger/json_formatter.rb index a58d4fb..07763f9 100644 --- a/lib/json_rails_logger/json_formatter.rb +++ b/lib/json_rails_logger/json_formatter.rb @@ -202,7 +202,7 @@ def process_optional_messages(msg) # rubocop:disable Metrics/AbcSize tmp_msg.insert(tmp_msg.index(','), format(' to %s', msg[:optional]['request_uri'])) end - tmp_msg + tmp_msg if OPTIONAL_KEYS.any? { |key| msg[:optional].key?(key) } end # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity @@ -248,25 +248,36 @@ def normalize_message(raw_msg) end def status_message?(msg) + # puts "Checking for status message in: #{msg}" if Rails.logger.debug? msg.is_a?(String) && msg.downcase.match(/status [0-9]+/) end def status_message(msg) - status = msg.split[1] + # puts "Found status message in: #{msg}" if Rails.logger.debug? + split_status = msg.split + # puts "Split status message: #{split_status}" if Rails.logger.debug? + is_status = split_status[0] == 'response:' + code = split_status[is_status ? 2 : 1] + + status = code.to_i { status: status } end def request_type?(msg) + # puts "Checking for request type in: #{msg}" if Rails.logger.debug? msg.is_a?(String) && REQUEST_METHODS.any? { |method| msg.match(/#{method} http\S+/) } end def request_type(msg) - splitted_msg = msg.split - method = splitted_msg[0] - path = splitted_msg[1] + # puts "Found request type in: #{msg}" if Rails.logger.debug? + split_type = msg.split + # puts "Split type: #{split_type}" if Rails.logger.debug? + is_request = split_type[0] == 'request:' + method = split_type[is_request ? 1 : 0] + path = split_type[is_request ? 2 : 1] { method: method, path: path } end diff --git a/lib/json_rails_logger/version.rb b/lib/json_rails_logger/version.rb index 646bb57..968ad36 100644 --- a/lib/json_rails_logger/version.rb +++ b/lib/json_rails_logger/version.rb @@ -2,7 +2,7 @@ module JsonRailsLogger MAJOR = 2 - MINOR = 1 + MINOR = 2 PATCH = 0 SUFFIX = nil VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}#{SUFFIX && "-#{SUFFIX}"}".freeze diff --git a/test/formatter_test.rb b/test/formatter_test.rb index ba6cbdc..22045aa 100644 --- a/test/formatter_test.rb +++ b/test/formatter_test.rb @@ -29,7 +29,7 @@ _(log_output).must_be_kind_of(String) json_output = JSON.parse(log_output) - _(json_output['status']).must_equal('200') + _(json_output['status']).must_equal(200) end it 'should parse method and path for requests' do