mimi-logger 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +44 -0
- data/lib/mimi/logger.rb +17 -13
- data/lib/mimi/logger/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc1a61b8b50fe78090ba13f5e6c84f492e2477d3b787bf309e31e45b53bcc552
|
4
|
+
data.tar.gz: 4135fb3a61883a0bfb507a5fd753497bc2fb251f7c30f35ca2beff912b6a63d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ba848ac8604e7b000eb303996f1cc73abd9e7652edfed6c65f2e38672849d30b3af99215ffac0f1d44ef422da8f7f4bc5694a53d57f570c45921c3bb616a719
|
7
|
+
data.tar.gz: 90ab9b7c5e6587e704059d9b0d59630fe70de3fdacd8269d5e644a1ab35a7466f8016bfb14c981975f5f663db7e1392e4a745ad51fa3173e7627809afd67cf8b
|
data/README.md
CHANGED
@@ -63,6 +63,50 @@ logger.info 'Jobs done', t: Time.now - t_start
|
|
63
63
|
# => '{"s":"I","m":"Jobs done","c":"60eecc2e764fe2f6", "t": 13.794034499}'
|
64
64
|
```
|
65
65
|
|
66
|
+
### How to log structured data
|
67
|
+
|
68
|
+
There are multiple ways to log an event. The first and the simplest one is to log just a text
|
69
|
+
message:
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
require 'mimi/logger'
|
73
|
+
|
74
|
+
logger = Mimi::Logger.new
|
75
|
+
|
76
|
+
logger.info 'I am a banana'
|
77
|
+
# or using a block variant
|
78
|
+
logger.debug { 'Debug this banana' }
|
79
|
+
```
|
80
|
+
|
81
|
+
Alternatively you can log a structured object, by passing a Hash in addition to the message:
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
require 'mimi/logger'
|
85
|
+
|
86
|
+
logger = Mimi::Logger.new
|
87
|
+
|
88
|
+
logger.info 'I am a banana', banana: { id: 123, weight: 456 }
|
89
|
+
# => {"s":"I","m":"I am a banana","c":"d8b6f859bf9d0190","banana":{"id":123,"weight":456}}
|
90
|
+
```
|
91
|
+
|
92
|
+
Or specify the object/Hash explicitly:
|
93
|
+
```ruby
|
94
|
+
...
|
95
|
+
logger.info m: 'I am a banana', banana: { id: 123, weight: 456 }
|
96
|
+
```
|
97
|
+
|
98
|
+
Or with a block variant:
|
99
|
+
```ruby
|
100
|
+
...
|
101
|
+
logger.debug do
|
102
|
+
{ banana: { id: 123, weight: 456 } }
|
103
|
+
end
|
104
|
+
|
105
|
+
# a block can also return an Array of one (Hash) or two (String,Hash) elements:
|
106
|
+
logger.debug { [m: 'Debug this banana', banana: { id: 123, weight: 456 }] }
|
107
|
+
logger.debug { ['Debug this banana', banana: { id: 123, weight: 456 }] }
|
108
|
+
```
|
109
|
+
|
66
110
|
### Logging context
|
67
111
|
|
68
112
|
Logging context refers to a set of instructions that are somehow logically grouped. For example,
|
data/lib/mimi/logger.rb
CHANGED
@@ -16,7 +16,7 @@ module Mimi
|
|
16
16
|
extend Forwardable
|
17
17
|
include Mimi::Core::Module
|
18
18
|
|
19
|
-
attr_reader :logger_instance
|
19
|
+
attr_reader :logger_instance, :options
|
20
20
|
delegate [
|
21
21
|
:debug?, :info?, :warn?, :error?, :fatal?,
|
22
22
|
:<<, :add, :log
|
@@ -49,11 +49,11 @@ module Mimi
|
|
49
49
|
opts ||= {}
|
50
50
|
raise ArgumentError, '(io, opts) are expected as parameters' unless args.empty?
|
51
51
|
|
52
|
-
|
52
|
+
@options = self.class.module_options.deep_merge(opts)
|
53
53
|
@logger_instance = ::Logger.new(io)
|
54
|
-
@logger_instance.level = self.class.level_from_any(
|
54
|
+
@logger_instance.level = self.class.level_from_any(options[:level])
|
55
55
|
io.sync = true if io.respond_to?(:sync=)
|
56
|
-
@logger_instance.formatter = self.class.formatter
|
56
|
+
@logger_instance.formatter = self.class.formatter(options)
|
57
57
|
end
|
58
58
|
|
59
59
|
# Returns the current log level
|
@@ -124,12 +124,12 @@ module Mimi
|
|
124
124
|
#
|
125
125
|
# @return [Proc]
|
126
126
|
#
|
127
|
-
def self.formatter
|
128
|
-
case
|
127
|
+
def self.formatter(options)
|
128
|
+
case options[:format].to_s
|
129
129
|
when 'json'
|
130
|
-
formatter_json
|
130
|
+
formatter_json(options)
|
131
131
|
when 'string'
|
132
|
-
formatter_string
|
132
|
+
formatter_string(options)
|
133
133
|
else
|
134
134
|
raise "Invalid format specified for Mimi::Logger: '#{module_options[:format]}'"
|
135
135
|
end
|
@@ -137,12 +137,14 @@ module Mimi
|
|
137
137
|
|
138
138
|
# Returns formatter for 'json' format
|
139
139
|
#
|
140
|
+
# @param options [Hash] logger options
|
141
|
+
#
|
140
142
|
# @return [Proc]
|
141
143
|
#
|
142
|
-
def self.formatter_json
|
144
|
+
def self.formatter_json(options)
|
143
145
|
proc do |severity, _datetime, _progname, message|
|
144
146
|
h = formatter_message_args_to_hash(message)
|
145
|
-
h[:c] = context_id if
|
147
|
+
h[:c] = context_id if options[:log_context]
|
146
148
|
h[:s] = severity.to_s[0]
|
147
149
|
h.to_json
|
148
150
|
end
|
@@ -150,15 +152,17 @@ module Mimi
|
|
150
152
|
|
151
153
|
# Returns formatter for 'string' format
|
152
154
|
#
|
155
|
+
# @param options [Hash] logger options
|
156
|
+
#
|
153
157
|
# @return [Proc]
|
154
158
|
#
|
155
|
-
def self.formatter_string
|
159
|
+
def self.formatter_string(options)
|
156
160
|
proc do |severity, _datetime, _progname, message|
|
157
161
|
h = formatter_message_args_to_hash(message)
|
158
162
|
parts = []
|
159
163
|
parts << severity.to_s[0]
|
160
|
-
parts << context_id if
|
161
|
-
parts << h[:m].to_s.tr("\n",
|
164
|
+
parts << context_id if options[:log_context]
|
165
|
+
parts << h[:m].to_s.tr("\n", options[:cr_character])
|
162
166
|
parts << '...' unless h.except(:m).empty?
|
163
167
|
parts.join(', ')
|
164
168
|
end
|
data/lib/mimi/logger/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mimi-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mimi-core
|