log_formatter 0.4.0 → 0.8.2
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 +30 -8
- data/examples/ruby_text_logger.rb +66 -0
- data/lib/log_formatter/common.rb +0 -20
- data/lib/log_formatter/common_json.rb +21 -0
- data/lib/log_formatter/common_text.rb +25 -0
- data/lib/log_formatter/log4r_json_formatter.rb +2 -0
- data/lib/log_formatter/ruby_json_formatter.rb +3 -1
- data/lib/log_formatter/ruby_text_formatter.rb +31 -0
- data/lib/log_formatter/version.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c8fce49cc4dc2f320cbe2f591453422cf7f0e315
|
|
4
|
+
data.tar.gz: 966bbb62c55642ee918290df161591db121a6a07
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 678d72c6135557fb6e962ce6fb21d1afb18ee398fd57e89047a9f619a0f91389b2a95724e89233456917f36b488beb307bf6afc2e45553d2e1d0f3830332c44f
|
|
7
|
+
data.tar.gz: d24682ed71aa86ed5b522714f012491bb118e50cfaef2a90f96549b6bcbb60fde92a679c682756bb255a46d87b941df9d6104ef310a2c97378703c97ada3adaf
|
data/README.md
CHANGED
|
@@ -27,9 +27,9 @@ Or install it yourself as:
|
|
|
27
27
|
|
|
28
28
|
## Usage
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
### Ruby Logger Json Formatter
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
#### quick start
|
|
33
33
|
|
|
34
34
|
```
|
|
35
35
|
require 'log_formatter'
|
|
@@ -55,7 +55,7 @@ result:
|
|
|
55
55
|
}
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
#### set app and common ext info
|
|
59
59
|
|
|
60
60
|
```
|
|
61
61
|
logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'})
|
|
@@ -75,7 +75,7 @@ result:
|
|
|
75
75
|
}
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
#### log with hash
|
|
79
79
|
|
|
80
80
|
```
|
|
81
81
|
logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'})
|
|
@@ -97,7 +97,7 @@ result:
|
|
|
97
97
|
}
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
#### reset the defaut key
|
|
101
101
|
|
|
102
102
|
json formatter will add `log_type`,`log_level`,`log_timestamp`,`log_app` as default key, but you can change them if needed.
|
|
103
103
|
|
|
@@ -126,7 +126,7 @@ result:
|
|
|
126
126
|
}
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
#### disable auto generate keys
|
|
130
130
|
|
|
131
131
|
json formatter will add `log_type`,`log_level`,`log_timestamp`,`log_app` as default key, but you can remove them if needed by setted to false.
|
|
132
132
|
|
|
@@ -155,9 +155,30 @@ result:
|
|
|
155
155
|
full code to see [examples/ruby_logger](https://github.com/chadlwm/log_formatter/blob/master/examples/ruby_logger.rb)
|
|
156
156
|
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
### Ruby Logger Text Formatter
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
#### Get Start
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
require 'log_formatter'
|
|
164
|
+
require 'log_formatter/ruby_json_formatter'
|
|
165
|
+
|
|
166
|
+
logger = Logger.new(STDOUT)
|
|
167
|
+
logger.level = Logger::DEBUG
|
|
168
|
+
|
|
169
|
+
logger.formatter = Ruby::JSONFormatter::Base.new
|
|
170
|
+
|
|
171
|
+
logger.debug("Created logger")
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
other cases just same as ruby json formatter.
|
|
175
|
+
|
|
176
|
+
full code to see [examples/ruby_text_logger](https://github.com/chadlwm/log_formatter/blob/master/examples/ruby_text_logger.rb)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
### Log4r JSON Formatter
|
|
180
|
+
|
|
181
|
+
#### Get Start
|
|
161
182
|
|
|
162
183
|
```
|
|
163
184
|
require 'log4r'
|
|
@@ -178,6 +199,7 @@ other cases just same as ruby json formatter.
|
|
|
178
199
|
|
|
179
200
|
full code to see [examples/log4r_logger](https://github.com/chadlwm/log_formatter/blob/master/examples/log4r_logger.rb)
|
|
180
201
|
|
|
202
|
+
|
|
181
203
|
## Test with Rspec
|
|
182
204
|
|
|
183
205
|
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'logger'
|
|
2
|
+
require 'log_formatter'
|
|
3
|
+
require 'log_formatter/ruby_text_formatter'
|
|
4
|
+
|
|
5
|
+
logger = Logger.new(STDOUT)
|
|
6
|
+
logger.level = Logger::DEBUG
|
|
7
|
+
|
|
8
|
+
# plain initialize
|
|
9
|
+
logger.formatter = Ruby::TextFormatter::Base.new
|
|
10
|
+
|
|
11
|
+
logger.debug("Created logger")
|
|
12
|
+
logger.info("Program started")
|
|
13
|
+
logger.warn("Nothing to do!")
|
|
14
|
+
# message:Created logger log_level:DEBUG log_type: log_app: log_timestamp:2017-12-07T17:25:18+08:00
|
|
15
|
+
# message:Program started log_level:INFO log_type: log_app: log_timestamp:2017-12-07T17:25:18+08:00
|
|
16
|
+
# message:Nothing to do! log_level:WARN log_type: log_app: log_timestamp:2017-12-07T17:25:18+08:00
|
|
17
|
+
|
|
18
|
+
# initialize with app and ext info
|
|
19
|
+
logger.formatter = Ruby::TextFormatter::Base.new('app', {'source': 'examples'})
|
|
20
|
+
|
|
21
|
+
logger.debug("Created logger")
|
|
22
|
+
logger.info("Program started")
|
|
23
|
+
logger.warn("Nothing to do!")
|
|
24
|
+
# source:examples message:Created logger log_level:DEBUG log_type: log_app:app log_timestamp:2017-12-07T17:25:56+08:00
|
|
25
|
+
# source:examples message:Program started log_level:INFO log_type: log_app:app log_timestamp:2017-12-07T17:25:56+08:00
|
|
26
|
+
# source:examples message:Nothing to do! log_level:WARN log_type: log_app:app log_timestamp:2017-12-07T17:25:56+08:00
|
|
27
|
+
|
|
28
|
+
# log hash
|
|
29
|
+
logger.formatter = Ruby::TextFormatter::Base.new('app', {'source': 'examples'})
|
|
30
|
+
|
|
31
|
+
logger.debug({data: "Created logger"})
|
|
32
|
+
logger.info({data: "Program started"})
|
|
33
|
+
logger.warn({data: "Nothing to do!"})
|
|
34
|
+
# source:examples data:Created logger log_level:DEBUG log_type: log_app:app log_timestamp:2017-12-07T17:25:56+08:00
|
|
35
|
+
# source:examples data:Program started log_level:INFO log_type: log_app:app log_timestamp:2017-12-07T17:25:56+08:00
|
|
36
|
+
# source:examples data:Nothing to do! log_level:WARN log_type: log_app:app log_timestamp:2017-12-07T17:25:56+08:00
|
|
37
|
+
|
|
38
|
+
# log with custome key instead of default keys
|
|
39
|
+
logger.formatter = Ruby::TextFormatter::Base.new('app', {'source': 'examples'}) do |config|
|
|
40
|
+
config[:level] = :cus_level
|
|
41
|
+
config[:type] = :cus_type
|
|
42
|
+
config[:app] = :cus_app
|
|
43
|
+
config[:timestamp] = :cus_timestamp
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
logger.debug({data: "Created logger"})
|
|
47
|
+
logger.info({data: "Program started"})
|
|
48
|
+
logger.warn({data: "Nothing to do!"})
|
|
49
|
+
# source:examples data:Created logger cus_level:DEBUG cus_type: cus_app:app cus_timestamp:2017-12-07T17:25:56+08:00
|
|
50
|
+
# source:examples data:Program started cus_level:INFO cus_type: cus_app:app cus_timestamp:2017-12-07T17:25:56+08:00
|
|
51
|
+
# source:examples data:Nothing to do! cus_level:WARN cus_type: cus_app:app cus_timestamp:2017-12-07T17:25:56+08:00
|
|
52
|
+
|
|
53
|
+
# log to disable some auto generate keys by setting to fasle
|
|
54
|
+
logger.formatter = Ruby::TextFormatter::Base.new('app', {'source': 'examples'}) do |config|
|
|
55
|
+
config[:level] = false
|
|
56
|
+
config[:type] = false
|
|
57
|
+
config[:app] = :cus_app
|
|
58
|
+
config[:timestamp] = false
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
logger.debug({data: "Created logger"})
|
|
62
|
+
logger.info({data: "Program started"})
|
|
63
|
+
logger.warn({data: "Nothing to do!"})
|
|
64
|
+
# source:examples data:Created logger cus_app:app
|
|
65
|
+
# source:examples data:Program started cus_app:app
|
|
66
|
+
# source:examples data:Nothing to do! cus_app:ap
|
data/lib/log_formatter/common.rb
CHANGED
|
@@ -1,24 +1,4 @@
|
|
|
1
1
|
module LogFormatter::Common
|
|
2
|
-
def build_event(message, severity, time, progname)
|
|
3
|
-
data = message
|
|
4
|
-
if data.is_a?(String) && data.start_with?('{'.freeze)
|
|
5
|
-
data = (JSON.parse(message) rescue nil) || message
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
event = case data
|
|
9
|
-
when Hash
|
|
10
|
-
data
|
|
11
|
-
else
|
|
12
|
-
{"message".freeze => msg2str(data)}
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
event[@config[:level].freeze] ||= severity if @config[:level]
|
|
16
|
-
event[@config[:type].freeze] = progname if @config[:type]
|
|
17
|
-
event[@config[:app].freeze] = @app if @config[:app]
|
|
18
|
-
event[@config[:timestamp].freeze] = current_time(time).iso8601 if @config[:timestamp]
|
|
19
|
-
"#{@ext.merge(event).to_json}\n"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
2
|
def msg2str(msg)
|
|
23
3
|
case msg
|
|
24
4
|
when ::String
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module LogFormatter::Common::JSON
|
|
2
|
+
def build_event(message, severity, time, progname)
|
|
3
|
+
data = message
|
|
4
|
+
if data.is_a?(String) && data.start_with?('{'.freeze)
|
|
5
|
+
data = (JSON.parse(message) rescue nil) || message
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
event = case data
|
|
9
|
+
when Hash
|
|
10
|
+
data
|
|
11
|
+
else
|
|
12
|
+
{"message".freeze => msg2str(data)}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
event[@config[:level].freeze] ||= severity if @config[:level]
|
|
16
|
+
event[@config[:type].freeze] = progname if @config[:type]
|
|
17
|
+
event[@config[:app].freeze] = @app if @config[:app]
|
|
18
|
+
event[@config[:timestamp].freeze] = current_time(time).iso8601 if @config[:timestamp]
|
|
19
|
+
"#{@ext.merge(event).to_json}\n"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module LogFormatter::Common::Text
|
|
2
|
+
def build_event(message, severity, time, progname)
|
|
3
|
+
data = message
|
|
4
|
+
if data.is_a?(String) && data.start_with?('{'.freeze)
|
|
5
|
+
data = (JSON.parse(message) rescue nil) || message
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
event = case data
|
|
9
|
+
when Hash
|
|
10
|
+
data
|
|
11
|
+
else
|
|
12
|
+
{"message".freeze => msg2str(data)}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
event[@config[:level].freeze] ||= severity if @config[:level]
|
|
16
|
+
event[@config[:type].freeze] = progname if @config[:type]
|
|
17
|
+
event[@config[:app].freeze] = @app if @config[:app]
|
|
18
|
+
event[@config[:timestamp].freeze] = current_time(time).iso8601 if @config[:timestamp]
|
|
19
|
+
log_msg = []
|
|
20
|
+
@ext.merge(event).each do |k, v|
|
|
21
|
+
log_msg << "#{k}:#{v}"
|
|
22
|
+
end
|
|
23
|
+
log_msg.join("\t")+"\n"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -2,10 +2,12 @@ require 'log4r'
|
|
|
2
2
|
require 'json'
|
|
3
3
|
require 'time'
|
|
4
4
|
require File.expand_path('../common', __FILE__)
|
|
5
|
+
require File.expand_path('../common_json', __FILE__)
|
|
5
6
|
|
|
6
7
|
module Log4r::JSONFormatter
|
|
7
8
|
class Base < Log4r::BasicFormatter
|
|
8
9
|
include LogFormatter::Common
|
|
10
|
+
include LogFormatter::Common::JSON
|
|
9
11
|
|
|
10
12
|
def initialize(app = nil, ext = {})
|
|
11
13
|
@app = app
|
|
@@ -2,15 +2,17 @@ require 'logger'
|
|
|
2
2
|
require 'json'
|
|
3
3
|
require 'time'
|
|
4
4
|
require File.expand_path('../common', __FILE__)
|
|
5
|
+
require File.expand_path('../common_json', __FILE__)
|
|
5
6
|
|
|
6
7
|
module Ruby
|
|
7
8
|
module JSONFormatter
|
|
8
9
|
class Base < ::Logger::Formatter
|
|
9
10
|
include LogFormatter::Common
|
|
11
|
+
include LogFormatter::Common::JSON
|
|
10
12
|
|
|
11
13
|
def initialize(app = nil, ext = {})
|
|
12
14
|
@app = app
|
|
13
|
-
@ext = ext.is_a?(Hash) ? ext : {}
|
|
15
|
+
@ext = ext.is_a?(Hash) ? ext : {ext_info: ext.inspect}
|
|
14
16
|
@config = {
|
|
15
17
|
level: :log_level,
|
|
16
18
|
type: :log_type,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'logger'
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'time'
|
|
4
|
+
require File.expand_path('../common', __FILE__)
|
|
5
|
+
require File.expand_path('../common_text', __FILE__)
|
|
6
|
+
|
|
7
|
+
module Ruby
|
|
8
|
+
module TextFormatter
|
|
9
|
+
class Base < ::Logger::Formatter
|
|
10
|
+
include LogFormatter::Common
|
|
11
|
+
include LogFormatter::Common::Text
|
|
12
|
+
|
|
13
|
+
def initialize(app = nil, ext = {})
|
|
14
|
+
@app = app
|
|
15
|
+
@ext = ext.is_a?(Hash) ? ext : {ext_info: ext.inspect}
|
|
16
|
+
@config = {
|
|
17
|
+
level: :log_level,
|
|
18
|
+
type: :log_type,
|
|
19
|
+
app: :log_app,
|
|
20
|
+
timestamp: :log_timestamp
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
yield @config if block_given?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def call(severity, time, progname, message)
|
|
27
|
+
@event = build_event(message, severity, time, progname)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: log_formatter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- chad_lwm
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-12-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -86,10 +86,14 @@ files:
|
|
|
86
86
|
- bin/setup
|
|
87
87
|
- examples/log4r_logger.rb
|
|
88
88
|
- examples/ruby_logger.rb
|
|
89
|
+
- examples/ruby_text_logger.rb
|
|
89
90
|
- lib/log_formatter.rb
|
|
90
91
|
- lib/log_formatter/common.rb
|
|
92
|
+
- lib/log_formatter/common_json.rb
|
|
93
|
+
- lib/log_formatter/common_text.rb
|
|
91
94
|
- lib/log_formatter/log4r_json_formatter.rb
|
|
92
95
|
- lib/log_formatter/ruby_json_formatter.rb
|
|
96
|
+
- lib/log_formatter/ruby_text_formatter.rb
|
|
93
97
|
- lib/log_formatter/version.rb
|
|
94
98
|
- log_formatter.gemspec
|
|
95
99
|
homepage: https://github.com/chadlwm/log_formatter
|
|
@@ -112,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
112
116
|
version: '0'
|
|
113
117
|
requirements: []
|
|
114
118
|
rubyforge_project:
|
|
115
|
-
rubygems_version: 2.
|
|
119
|
+
rubygems_version: 2.6.8
|
|
116
120
|
signing_key:
|
|
117
121
|
specification_version: 4
|
|
118
122
|
summary: log formatter
|