From f384afa2161f00562efae5c34c647fa48eeb2aa7 Mon Sep 17 00:00:00 2001 From: bogdan Date: Fri, 26 Feb 2021 14:05:28 +0000 Subject: [PATCH 01/14] Added milliseconds and timezone to timestamp --- lib/json_rails_logger/logger.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json_rails_logger/logger.rb b/lib/json_rails_logger/logger.rb index 42ff580..3d28fc2 100644 --- a/lib/json_rails_logger/logger.rb +++ b/lib/json_rails_logger/logger.rb @@ -9,7 +9,7 @@ class Logger < ::Logger # binmode: false, shift_period_suffix: '%Y%m%d' def initialize(*args) @formatter = JsonRailsLogger::JsonFormatter.new - @formatter.datetime_format = '%Y-%m-%d %H:%M:%S' + @formatter.datetime_format = '%Y-%m-%d %H:%M:%S.%3N %Z' super(*args, formatter: @formatter) end From d26a122814357314ec3353c8c1fcd959a902218d Mon Sep 17 00:00:00 2001 From: bogdan Date: Fri, 26 Feb 2021 14:08:39 +0000 Subject: [PATCH 02/14] Timestamp field renamed in returning json --- lib/json_rails_logger/json_formatter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json_rails_logger/json_formatter.rb b/lib/json_rails_logger/json_formatter.rb index 46aa837..bda340a 100644 --- a/lib/json_rails_logger/json_formatter.rb +++ b/lib/json_rails_logger/json_formatter.rb @@ -14,7 +14,7 @@ def call(severity, timestamp, _progname, raw_msg) new_msg = format_message(msg) payload = { level: sev, - timestamp: timestp } + ts: timestp } payload.merge!(request_id.to_h) payload.merge!(new_msg.to_h) From 1336e0cf0f8734af5d7c530bafcf3c74c44cf463 Mon Sep 17 00:00:00 2001 From: bogdan Date: Fri, 26 Feb 2021 14:33:53 +0000 Subject: [PATCH 03/14] Changed timestamp format in tests --- test/formatter_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/formatter_test.rb b/test/formatter_test.rb index f11740a..60ada3d 100644 --- a/test/formatter_test.rb +++ b/test/formatter_test.rb @@ -7,7 +7,7 @@ describe 'JsonRailsLogger::JsonFormatter' do # rubocop:disable Metrics/BlockLength let(:fixture) do formatter = JsonRailsLogger::JsonFormatter.new - formatter.datetime_format = '%Y-%m-%d %H:%M:%S' + formatter.datetime_format = '%Y-%m-%d %H:%M:%S.%3N %Z' formatter end From 1a389014a9e15fcc34d0dc97c3363a64b0539416 Mon Sep 17 00:00:00 2001 From: bogdan Date: Fri, 26 Feb 2021 14:34:25 +0000 Subject: [PATCH 04/14] Test date modified to reflect changes --- test/formatter_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/formatter_test.rb b/test/formatter_test.rb index 60ada3d..95fa103 100644 --- a/test/formatter_test.rb +++ b/test/formatter_test.rb @@ -11,7 +11,7 @@ formatter end - let(:timestamp) { DateTime.parse('2020-12-15T20:15:21') } + let(:timestamp) { DateTime.parse('2020-12-15T20:15:21.286+00:00') } let(:progname) { 'progname' } it 'should replace FATAL with ERROR for severity' do From 7aa7c45e984adb1ae153ff568079acaa6fb85314 Mon Sep 17 00:00:00 2001 From: bogdan Date: Fri, 26 Feb 2021 14:34:37 +0000 Subject: [PATCH 05/14] Fixed failing unit test --- test/formatter_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/formatter_test.rb b/test/formatter_test.rb index 95fa103..a91cc2c 100644 --- a/test/formatter_test.rb +++ b/test/formatter_test.rb @@ -63,7 +63,7 @@ _(log_output).must_be_kind_of(String) json_output = JSON.parse(log_output) - _(json_output['timestamp']).must_equal('2020-12-15 20:15:21') + _(json_output['ts']).must_equal('2020-12-15 20:15:21.286 +00:00') end it 'should move json to top level if message is json object' do From 0601f3e74498ba3dcd4864cde9d309528e5d339d Mon Sep 17 00:00:00 2001 From: bogdan Date: Tue, 2 Mar 2021 13:54:32 +0000 Subject: [PATCH 06/14] Corrected date format --- lib/json_rails_logger/logger.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json_rails_logger/logger.rb b/lib/json_rails_logger/logger.rb index 3d28fc2..3091cb5 100644 --- a/lib/json_rails_logger/logger.rb +++ b/lib/json_rails_logger/logger.rb @@ -9,7 +9,7 @@ class Logger < ::Logger # binmode: false, shift_period_suffix: '%Y%m%d' def initialize(*args) @formatter = JsonRailsLogger::JsonFormatter.new - @formatter.datetime_format = '%Y-%m-%d %H:%M:%S.%3N %Z' + @formatter.datetime_format = '%Y-%m-%dT%H:%M:%S.%3NZ' super(*args, formatter: @formatter) end From a55389b18987cc363fd30e26fd34c060aa63f09c Mon Sep 17 00:00:00 2001 From: bogdan Date: Tue, 2 Mar 2021 13:56:25 +0000 Subject: [PATCH 07/14] Fixed unit tests to match new date format --- test/formatter_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/formatter_test.rb b/test/formatter_test.rb index a91cc2c..c329b6b 100644 --- a/test/formatter_test.rb +++ b/test/formatter_test.rb @@ -7,11 +7,11 @@ describe 'JsonRailsLogger::JsonFormatter' do # rubocop:disable Metrics/BlockLength let(:fixture) do formatter = JsonRailsLogger::JsonFormatter.new - formatter.datetime_format = '%Y-%m-%d %H:%M:%S.%3N %Z' + formatter.datetime_format = '%Y-%m-%dT%H:%M:%S.%3NZ' formatter end - let(:timestamp) { DateTime.parse('2020-12-15T20:15:21.286+00:00') } + let(:timestamp) { DateTime.parse('2020-12-15 20:15:21.286') } let(:progname) { 'progname' } it 'should replace FATAL with ERROR for severity' do @@ -63,7 +63,7 @@ _(log_output).must_be_kind_of(String) json_output = JSON.parse(log_output) - _(json_output['ts']).must_equal('2020-12-15 20:15:21.286 +00:00') + _(json_output['ts']).must_equal('2020-12-15T20:15:21.286Z') end it 'should move json to top level if message is json object' do From 73f2fa0e4288a2d01c483491e8157ae8afbf0297 Mon Sep 17 00:00:00 2001 From: bogdan Date: Tue, 2 Mar 2021 14:00:18 +0000 Subject: [PATCH 08/14] Bumped app version --- Gemfile.lock | 2 +- lib/json_rails_logger/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5f64d7e..d6a0517 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - json_rails_logger (0.2.1) + json_rails_logger (0.2.2) json lograge railties diff --git a/lib/json_rails_logger/version.rb b/lib/json_rails_logger/version.rb index 71ee29e..f8c6321 100644 --- a/lib/json_rails_logger/version.rb +++ b/lib/json_rails_logger/version.rb @@ -3,6 +3,6 @@ module JsonRailsLogger MAJOR = 0 MINOR = 2 - FIX = 1 + FIX = 2 VERSION = "#{MAJOR}.#{MINOR}.#{FIX}" end From f5311f0add9f708abef3414d7edf8a234ac6d45e Mon Sep 17 00:00:00 2001 From: bogdan Date: Tue, 2 Mar 2021 14:00:52 +0000 Subject: [PATCH 09/14] Added new changelog entry --- CHANGELOG.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fca4372..83e1ea0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,18 @@ # Changelog for the JSON Rails Logger gem +## 0.2.2 - 2021-03-02 (Bogdan) + +- `timestamp` renamed to `ts` in returning JSON +- Date format for timestamp changed to `%Y-%m-%dT%H:%M:%S.%3NZ` + ## 0.2.1 - 2021-02-23 (Bogdan) - Unit tests should now autorun on push and pull_request actions -- 'x-request-id' renamed to 'request_id' in code and returning JSON +- `x-request-id` renamed to `request_id` in code and returning JSON ## 0.2.0 - 2021-02-01 (Bogdan) -- Platform related fields are now grouped together inside the 'rails' field +- Platform related fields are now grouped together inside the `rails` field - Request ID is now present in every log message - MIT license file added to the repo - Added readme file with usage instructions From 83e3f37cde97ba24897309e9c75d3f37e6c0f650 Mon Sep 17 00:00:00 2001 From: bogdan Date: Thu, 4 Mar 2021 16:17:35 +0000 Subject: [PATCH 10/14] Skip internal request id generation step --- lib/json_rails_logger/request_id_middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json_rails_logger/request_id_middleware.rb b/lib/json_rails_logger/request_id_middleware.rb index c18c92b..61114dc 100644 --- a/lib/json_rails_logger/request_id_middleware.rb +++ b/lib/json_rails_logger/request_id_middleware.rb @@ -11,7 +11,7 @@ def initialize(app) end def call(env) - request_id = env['action_dispatch.request_id'] + request_id = env['HTTP_X_REQUEST_ID'] Thread.current[JsonRailsLogger::REQUEST_ID] = request_id @app.call(env) ensure From 9fe31b7539e3caf670a52274ef81dbb897cb17e2 Mon Sep 17 00:00:00 2001 From: bogdan Date: Thu, 4 Mar 2021 16:34:10 +0000 Subject: [PATCH 11/14] Bumped app version --- Gemfile.lock | 2 +- lib/json_rails_logger/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5f64d7e..d6a0517 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - json_rails_logger (0.2.1) + json_rails_logger (0.2.2) json lograge railties diff --git a/lib/json_rails_logger/version.rb b/lib/json_rails_logger/version.rb index 71ee29e..f8c6321 100644 --- a/lib/json_rails_logger/version.rb +++ b/lib/json_rails_logger/version.rb @@ -3,6 +3,6 @@ module JsonRailsLogger MAJOR = 0 MINOR = 2 - FIX = 1 + FIX = 2 VERSION = "#{MAJOR}.#{MINOR}.#{FIX}" end From ed7c15d05d0d9aafa07db1a6261f6412adeecb98 Mon Sep 17 00:00:00 2001 From: bogdan Date: Thu, 4 Mar 2021 16:34:20 +0000 Subject: [PATCH 12/14] Added changelog entry --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fca4372..cf6513d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog for the JSON Rails Logger gem +## 0.2.2 - 2021-03-02 (Bogdan) + +- `request_id` is no longer internally generated if the header is missing from + the request, but the field will be missing from the returning JSON instead + ## 0.2.1 - 2021-02-23 (Bogdan) - Unit tests should now autorun on push and pull_request actions From 66e21e73cac52174e41b78e3906778dc8de368b9 Mon Sep 17 00:00:00 2001 From: bogdan Date: Mon, 8 Mar 2021 17:33:42 +0000 Subject: [PATCH 13/14] Timestamp now is always UTC --- lib/json_rails_logger/json_formatter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json_rails_logger/json_formatter.rb b/lib/json_rails_logger/json_formatter.rb index bda340a..1c33add 100644 --- a/lib/json_rails_logger/json_formatter.rb +++ b/lib/json_rails_logger/json_formatter.rb @@ -29,7 +29,7 @@ def process_severity(severity) end def process_timestamp(timestamp) - format_datetime(timestamp) + format_datetime(timestamp.utc) end def request_id From 6b3f9adf491bfbaac68dd4921a45495b0c0159df Mon Sep 17 00:00:00 2001 From: bogdan Date: Mon, 8 Mar 2021 17:34:31 +0000 Subject: [PATCH 14/14] Using time instead of datetime This is because "timestamp" in the formatter is also Time --- test/formatter_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/formatter_test.rb b/test/formatter_test.rb index c329b6b..269993a 100644 --- a/test/formatter_test.rb +++ b/test/formatter_test.rb @@ -11,7 +11,7 @@ formatter end - let(:timestamp) { DateTime.parse('2020-12-15 20:15:21.286') } + let(:timestamp) { Time.parse('2020-12-15 20:15:21.286') } let(:progname) { 'progname' } it 'should replace FATAL with ERROR for severity' do