logist 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52997b31f4c651b9349bf9427a4844956269c5f58973db7094231652b99ad7e6
4
- data.tar.gz: f8e631686dd4d2511aad0153d718031a8d3455c0bf31cde2f25a63c72fd0c687
3
+ metadata.gz: 6e6ad3e32e005fb5cd93ab69c54a65cda28d6c39339084d0d85ab0d506478cb8
4
+ data.tar.gz: fba3d6f1f25d24836fbe8bc63d0e45f7061001144b4b9b472898cda2dfc3e4ca
5
5
  SHA512:
6
- metadata.gz: 696cc510043ead76af46528791e5db536527bd978ddf005e1051ab062eabd84b85235655a43fffacff728a871e7386bda1f240fa8bb22d26e922f1298bbae5b0
7
- data.tar.gz: ef66a241b788823ebca6b6a0e5efc807fcd5c57dbda8c3e43d138a5ce3e23f2fe451de67684e52d5c063278f305e57195df79731e2ae16afadf33da72a9b76a9
6
+ metadata.gz: 1d9c68a45b69f8a44f3416359582d60a3ad3b7cc6c2e801f76d9f3b5712a2afa40440d9220da527abfe8fa9582fcf810e4b2f6a01ee96bdf48925007e219b299
7
+ data.tar.gz: fbb266f39ea4f7175e1a55a683092944885a15152ad13bc790dfd3572140cb068f149fefee7814859547dbf93382347d0be660eb0321bb8e077cf7e6deb972e6
data/README.md CHANGED
@@ -66,6 +66,25 @@ Rails.application.configure do
66
66
  end
67
67
  ```
68
68
 
69
+ ### flat_json option
70
+
71
+ If you want to log Hash object, but you don't want to have nested JSON, you can set `flat_json=true`:
72
+
73
+ ```ruby
74
+ config.logger.formatter.flat_json = true
75
+ ```
76
+
77
+ When `flat_json=false` (default):
78
+
79
+ ```json
80
+ {"level":"INFO","message":{"foo":"bar"}}
81
+ ```
82
+
83
+ When `flat_json=true`:
84
+
85
+ ```json
86
+ {"level":"INFO","foo":"bar"}
87
+ ```
69
88
 
70
89
 
71
90
  ## Development
@@ -5,23 +5,29 @@ require 'rails'
5
5
  module Logist
6
6
  module Formatter
7
7
  class Json < ::Logger::Formatter
8
- def call(severity, timestamp, progname, msg)
9
- { level: severity, timestamp: format_datetime(timestamp), environment: ::Rails.env, message: format_message(msg) }.to_json + "\n"
10
- end
8
+ attr_accessor :flat_json
9
+
10
+ def call(severity, timestamp, progname, raw_msg)
11
+ msg = normalize_message(raw_msg)
12
+ payload = { level: severity, timestamp: format_datetime(timestamp), environment: ::Rails.env }
11
13
 
12
- def format_message(msg)
13
- case msg.class.name
14
- when "Hash"
15
- msg
16
- when "Array"
17
- msg
18
- else
19
- begin
20
- JSON.parse(msg)
21
- rescue JSON::ParserError
22
- "#{msg}"
23
- end
14
+ if flat_json && msg.is_a?(Hash)
15
+ payload.merge!(msg)
16
+ else
17
+ payload.merge!(message: msg)
24
18
  end
19
+
20
+ payload.to_json << "\n"
21
+ end
22
+
23
+ private
24
+
25
+ def normalize_message(raw_msg)
26
+ return raw_msg unless raw_msg.is_a?(String)
27
+
28
+ JSON.parse(raw_msg)
29
+ rescue JSON::ParserError
30
+ raw_msg
25
31
  end
26
32
  end
27
33
  end
@@ -14,17 +14,25 @@ module Logist
14
14
  end
15
15
 
16
16
  def initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG,
17
- progname: nil, formatter: nil, datetime_format: nil,
17
+ progname: nil, formatter: nil, datetime_format: nil, flat_json: false,
18
18
  shift_period_suffix: '%Y%m%d')
19
19
  # I think that Logist should support other formats in the future.
20
20
  # But, as it is now, Logist only support json format.
21
21
  # So this line force json format all environments.
22
22
  @formatter = Logist::Formatter::Json.new
23
23
  @formatter.datetime_format = datetime_format
24
+ @formatter.flat_json = flat_json
24
25
  super(logdev, shift_age, shift_size, level: level,
25
26
  progname: progname, formatter: @formatter, datetime_format: datetime_format,
26
27
  shift_period_suffix: shift_period_suffix)
27
- after_initialize if respond_to? :after_initialize
28
+
29
+ # https://github.com/rails/rails/pull/34055
30
+ # even with ^ respond_to?(:after_initialize) is still true
31
+ # but we know not to run it if ActiveSupport::LoggerSilence is defined, since that was added in the same rails version
32
+ # via https://github.com/rails/rails/pull/34045
33
+ if !defined?(ActiveSupport::LoggerSilence) && respond_to?(:after_initialize)
34
+ after_initialize
35
+ end
28
36
  end
29
37
  end
30
38
  end
@@ -1,3 +1,3 @@
1
1
  module Logist
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AkiraFukushima
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-10 00:00:00.000000000 Z
11
+ date: 2020-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -128,7 +128,7 @@ licenses:
128
128
  - MIT
129
129
  metadata:
130
130
  allowed_push_host: https://rubygems.org
131
- post_install_message:
131
+ post_install_message:
132
132
  rdoc_options: []
133
133
  require_paths:
134
134
  - lib
@@ -143,8 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  requirements: []
146
- rubygems_version: 3.0.3
147
- signing_key:
146
+ rubygems_version: 3.1.2
147
+ signing_key:
148
148
  specification_version: 4
149
149
  summary: Change log format to json in Rails.
150
150
  test_files: []