log_formatter 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3eb86ba92366fe1b7bd2ce2e1ee8710f5291f6ac
4
- data.tar.gz: aa7049e97734f880b43cf7602af22f745300faeb
3
+ metadata.gz: 90f99a541ff581ec9e24cbd0581175ebb8452706
4
+ data.tar.gz: 32d2812b82a6aadd54a92efd2e0afb1dedec60fe
5
5
  SHA512:
6
- metadata.gz: a3f61442413c1996da8b32952d04647e9de7a892810d579728196dce62e804288a1f63bae32d400fdf25d07be4d13d700b075c966ca2f139c0ae8b516eebbeeb
7
- data.tar.gz: 6340c09cd30f77bc15e0730858d9fea09d7b7751b9088d04ee8652536d8caa21d8cd4822591932a46a9dae4990ed1a09e6eee235437ed71e3951a06379aa6c29
6
+ metadata.gz: a92a60ba028c177da4f07cf7f0768d43ab1bb864af4ae00f200ea37ffdc2896a0675ede8934b2c84e7b374ffdb26f0b76eca9d373cefff7f2b8d89716ae4469c
7
+ data.tar.gz: 8b6918a822261bd8e0709893ff740c27edf3a80530e5ae4e75d8c20bfe09f47874e9be9d405ff82407c46478c32cd4eb4bdd0016848d927857844ab464ecd731
data/README.md CHANGED
@@ -5,6 +5,7 @@ Log Formatter for Ruby and other logger.
5
5
  Details as following:
6
6
 
7
7
  - `log_formatter/ruby_json_formatter'` : ruby logger json formatter
8
+ - `log_formatter/log4r_json_formatter'` : log4r logger json formatter
8
9
 
9
10
  ## Installation
10
11
 
@@ -32,7 +33,10 @@ Or install it yourself as:
32
33
  require 'logger_formatter.rb'
33
34
  require 'log_formatter/ruby_json_formatter'
34
35
 
35
- logger.formatter = RubyJSONFormatter::Base.new
36
+ logger = Logger.new(STDOUT)
37
+ logger.level = Logger::DEBUG
38
+
39
+ logger.formatter = Ruby::JSONFormatter::Base.new
36
40
 
37
41
  logger.info 'test data'
38
42
  ```
@@ -52,7 +56,7 @@ result:
52
56
  ### set app and common ext info
53
57
 
54
58
  ```
55
- logger.formatter = RubyJSONFormatter::Base.new('app', {'source': 'examples'})
59
+ logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'})
56
60
  logger.info 'test data'
57
61
  ```
58
62
 
@@ -72,7 +76,7 @@ result:
72
76
  ### log with hash
73
77
 
74
78
  ```
75
- logger.formatter = RubyJSONFormatter::Base.new('app', {'source': 'examples'})
79
+ logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'})
76
80
 
77
81
  logger.debug({data: "test data", author: 'chad'})
78
82
  ```
@@ -96,7 +100,7 @@ result:
96
100
  json formatter will add `log_type`,`log_level`,`log_timestamp`,`log_app` as default key, but you can change them if needed.
97
101
 
98
102
  ```
99
- logger.formatter = RubyJSONFormatter::Base.new('app', {'source': 'examples'}) do |config|
103
+ logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'}) do |config|
100
104
  config[:level] = :cus_level
101
105
  config[:type] = :cus_type
102
106
  config[:app] = :cus_app
@@ -122,6 +126,26 @@ result:
122
126
 
123
127
  full code to see [examples/ruby_logger](https://github.com/chadlwm/log_formatter/blob/master/examples/ruby_logger.rb)
124
128
 
129
+
130
+ ## Log4r JSON Formatter
131
+
132
+ ### Get Start
133
+
134
+ ```
135
+ logger = Log4r::Logger.new('Log4RTest')
136
+ outputter = Log4r::StdoutOutputter.new(
137
+ "console",
138
+ :formatter => Log4r::JSONFormatter::Base.new
139
+ )
140
+ logger.add(outputter)
141
+
142
+ logger.debug("Created logger")
143
+ ```
144
+
145
+ other cases just same as ruby json formatter.
146
+
147
+ full code to see [examples/log4r_logger](https://github.com/chadlwm/log_formatter/blob/master/examples/log4r_logger.rb)
148
+
125
149
  ## Test with Rspec
126
150
 
127
151
  ```
@@ -0,0 +1,71 @@
1
+ require 'log4r'
2
+ require 'log_formatter'
3
+ require 'log_formatter/log4r_json_formatter'
4
+ include Log4r
5
+
6
+ logger = Log4r::Logger.new('Log4RTest')
7
+ # logger.outputters = Outputter.stdout
8
+ outputter = Log4r::StdoutOutputter.new(
9
+ "console",
10
+ :formatter => Log4r::JSONFormatter::Base.new
11
+ )
12
+ logger.add(outputter)
13
+
14
+ # plain initialize
15
+
16
+ logger.debug("Created logger")
17
+ logger.info("Program started")
18
+ logger.warn("Nothing to do!")
19
+ # {"message":"Created logger","log_level":"DEBUG","log_type":"Log4RTest","log_app":null,"log_timestamp":"2016-08-25T16:48:13+08:00"}
20
+ # {"message":"Program started","log_level":"INFO","log_type":"Log4RTest","log_app":null,"log_timestamp":"2016-08-25T16:48:13+08:00"}
21
+ # {"message":"Nothing to do!","log_level":"WARN","log_type":"Log4RTest","log_app":null,"log_timestamp":"2016-08-25T16:48:13+08:00"}
22
+
23
+ # initialize with app and ext info
24
+ logger2 = Log4r::Logger.new('Log4RTest')
25
+ outputter2 = Log4r::StdoutOutputter.new(
26
+ "console",
27
+ :formatter => Log4r::JSONFormatter::Base.new('app', {'source': 'examples'})
28
+ )
29
+ logger2.add(outputter2)
30
+
31
+ logger2.debug("Created logger")
32
+ logger2.info("Program started")
33
+ logger2.warn("Nothing to do!")
34
+ # {"source":"examples","message":"Created logger","log_level":"DEBUG","log_type":"Log4RTest","log_app":"app","log_timestamp":"2016-08-25T17:02:37+08:00"}
35
+ # {"source":"examples","message":"Program started","log_level":"INFO","log_type":"Log4RTest","log_app":"app","log_timestamp":"2016-08-25T17:02:37+08:00"}
36
+ # {"source":"examples","message":"Nothing to do!","log_level":"WARN","log_type":"Log4RTest","log_app":"app","log_timestamp":"2016-08-25T17:02:37+08:00"}
37
+
38
+ logger3 = Log4r::Logger.new('Log4RTest')
39
+ outputter3 = Log4r::StdoutOutputter.new(
40
+ "console",
41
+ :formatter => Log4r::JSONFormatter::Base.new('app', {'source': 'examples'})
42
+ )
43
+ logger3.add(outputter3)
44
+
45
+ logger3.debug({data: "Created logger"})
46
+ logger3.info({data: "Program started"})
47
+ logger3.warn({data: "Nothing to do!"})
48
+ # {"source":"examples","data":"Created logger","log_level":"DEBUG","log_type":"Log4RTest","log_app":"app","log_timestamp":"2016-08-25T17:03:48+08:00"}
49
+ # {"source":"examples","data":"Program started","log_level":"INFO","log_type":"Log4RTest","log_app":"app","log_timestamp":"2016-08-25T17:03:48+08:00"}
50
+ # {"source":"examples","data":"Nothing to do!","log_level":"WARN","log_type":"Log4RTest","log_app":"app","log_timestamp":"2016-08-25T17:03:48+08:00"}
51
+
52
+
53
+ logger4 = Log4r::Logger.new('Log4RTest')
54
+ json_formatter4 = Log4r::JSONFormatter::Base.new('app', {'source': 'examples'}) do |config|
55
+ config[:level] = :cus_level
56
+ config[:type] = :cus_type
57
+ config[:app] = :cus_app
58
+ config[:timestamp] = :cus_timestamp
59
+ end
60
+ outputter4 = Log4r::StdoutOutputter.new(
61
+ "console",
62
+ :formatter => json_formatter4
63
+ )
64
+ logger4.add(outputter4)
65
+
66
+ logger4.debug({data: "Created logger", autho: 'chad'})
67
+ logger4.info({data: "Program started", autho: 'chad'})
68
+ logger4.warn({data: "Nothing to do!", autho: 'chad'})
69
+ # {"source":"examples","data":"Created logger","autho":"chad","cus_level":"DEBUG","cus_type":"Log4RTest","cus_app":"app","cus_timestamp":"2016-08-25T17:06:06+08:00"}
70
+ # {"source":"examples","data":"Program started","autho":"chad","cus_level":"INFO","cus_type":"Log4RTest","cus_app":"app","cus_timestamp":"2016-08-25T17:06:06+08:00"}
71
+ # {"source":"examples","data":"Nothing to do!","autho":"chad","cus_level":"WARN","cus_type":"Log4RTest","cus_app":"app","cus_timestamp":"2016-08-25T17:06:06+08:00"}
@@ -6,7 +6,7 @@ logger = Logger.new(STDOUT)
6
6
  logger.level = Logger::DEBUG
7
7
 
8
8
  # plain initialize
9
- logger.formatter = RubyJSONFormatter::Base.new
9
+ logger.formatter = Ruby::JSONFormatter::Base.new
10
10
 
11
11
  logger.debug("Created logger")
12
12
  logger.info("Program started")
@@ -16,7 +16,7 @@ logger.warn("Nothing to do!")
16
16
  # {"message":"Nothing to do!","log_level":"WARN","log_type":null,"log_app":null,"log_timestamp":"2016-08-25T15:34:25+08:00"}
17
17
 
18
18
  # initialize with app and ext info
19
- logger.formatter = RubyJSONFormatter::Base.new('app', {'source': 'examples'})
19
+ logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'})
20
20
 
21
21
  logger.debug("Created logger")
22
22
  logger.info("Program started")
@@ -26,7 +26,7 @@ logger.warn("Nothing to do!")
26
26
  # {"source":"examples","message":"Nothing to do!","log_level":"WARN","log_type":null,"log_app":"app","log_timestamp":"2016-08-25T15:34:25+08:00"}
27
27
 
28
28
  # log hash
29
- logger.formatter = RubyJSONFormatter::Base.new('app', {'source': 'examples'})
29
+ logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'})
30
30
 
31
31
  logger.debug({data: "Created logger"})
32
32
  logger.info({data: "Program started"})
@@ -36,7 +36,7 @@ logger.warn({data: "Nothing to do!"})
36
36
  # {"source":"examples","data":"Nothing to do!","log_level":"WARN","log_type":null,"log_app":"app","log_timestamp":"2016-08-25T15:34:25+08:00"}
37
37
 
38
38
  # log with custome key instead of default keys
39
- logger.formatter = RubyJSONFormatter::Base.new('app', {'source': 'examples'}) do |config|
39
+ logger.formatter = Ruby::JSONFormatter::Base.new('app', {'source': 'examples'}) do |config|
40
40
  config[:level] = :cus_level
41
41
  config[:type] = :cus_type
42
42
  config[:app] = :cus_app
@@ -0,0 +1,38 @@
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
16
+ event[@config[:type].freeze] = progname
17
+ event[@config[:app].freeze] = @app
18
+ event[@config[:timestamp].freeze] = current_time(time).iso8601
19
+ "#{@ext.merge(event).to_json}\n"
20
+ end
21
+
22
+ def msg2str(msg)
23
+ case msg
24
+ when ::String
25
+ msg.gsub("\n", "\t")
26
+ when ::Exception
27
+ "#{ msg.message } (#{ msg.class })\t" <<
28
+ (msg.backtrace || []).join("\t")
29
+ else
30
+ msg.inspect
31
+ end
32
+ end
33
+
34
+ def current_time(time)
35
+ return time if time
36
+ Time.respond_to?(:current) ? Time.current : Time.now
37
+ end
38
+ end
@@ -0,0 +1,29 @@
1
+ require 'log4r'
2
+ require 'json'
3
+ require 'time'
4
+ require File.expand_path('../common', __FILE__)
5
+
6
+ module Log4r::JSONFormatter
7
+ class Base < Log4r::BasicFormatter
8
+ include LogFormatter::Common
9
+
10
+ def initialize(app = nil, ext = {})
11
+ @app = app
12
+ @ext = ext.is_a?(Hash) ? ext : {}
13
+ @config = {
14
+ level: :log_level,
15
+ type: :log_type,
16
+ app: :log_app,
17
+ timestamp: :log_timestamp
18
+ }
19
+
20
+ yield @config if block_given?
21
+
22
+ super()
23
+ end
24
+
25
+ def format(event)
26
+ @event = build_event(event.data, Log4r::LNAMES[event.level], nil, event.name)
27
+ end
28
+ end
29
+ end
@@ -1,63 +1,29 @@
1
1
  require 'logger'
2
2
  require 'json'
3
3
  require 'time'
4
-
5
- module RubyJSONFormatter
6
- class Base < ::Logger::Formatter
7
- def initialize(app = nil, ext = {})
8
- @app = app
9
- @ext = ext.is_a?(Hash) ? ext : {}
10
- @config = {
11
- level: :log_level,
12
- type: :log_type,
13
- app: :log_app,
14
- timestamp: :log_timestamp
15
- }
16
-
17
- yield @config if block_given?
18
- end
19
-
20
- def call(severity, time, progname, message)
21
- @event = build_event(message, severity, time, progname)
22
- end
23
-
24
- protected
25
-
26
- def build_event(message, severity, time, progname)
27
- data = message
28
- if data.is_a?(String) && data.start_with?('{'.freeze)
29
- data = (JSON.parse(message) rescue nil) || message
4
+ require File.expand_path('../common', __FILE__)
5
+
6
+ module Ruby
7
+ module JSONFormatter
8
+ class Base < ::Logger::Formatter
9
+ include LogFormatter::Common
10
+
11
+ def initialize(app = nil, ext = {})
12
+ @app = app
13
+ @ext = ext.is_a?(Hash) ? ext : {}
14
+ @config = {
15
+ level: :log_level,
16
+ type: :log_type,
17
+ app: :log_app,
18
+ timestamp: :log_timestamp
19
+ }
20
+
21
+ yield @config if block_given?
30
22
  end
31
23
 
32
- event = case data
33
- when Hash
34
- data
35
- else
36
- {"message".freeze => msg2str(data)}
37
- end
38
-
39
- event[@config[:level].freeze] ||= severity
40
- event[@config[:type].freeze] = progname
41
- event[@config[:app].freeze] = @app
42
- event[@config[:timestamp].freeze] = current_time(time).iso8601
43
- "#{@ext.merge(event).to_json}\n"
44
- end
45
-
46
- def msg2str(msg)
47
- case msg
48
- when ::String
49
- msg.gsub("\n", "\t")
50
- when ::Exception
51
- "#{ msg.message } (#{ msg.class })\t" <<
52
- (msg.backtrace || []).join("\t")
53
- else
54
- msg.inspect
24
+ def call(severity, time, progname, message)
25
+ @event = build_event(message, severity, time, progname)
55
26
  end
56
27
  end
57
-
58
- def current_time(time)
59
- return time if time
60
- Time.respond_to?(:current) ? Time.current : Time.now
61
- end
62
28
  end
63
29
  end
@@ -1,3 +1,3 @@
1
1
  module LogFormatter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "bundler", "~> 1.12"
31
31
  spec.add_development_dependency "rake", "~> 10.0"
32
32
  spec.add_development_dependency "rspec", "~> 3.0"
33
+ spec.add_development_dependency "log4r", "~> 1.1"
33
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - chad_lwm
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: log4r
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.1'
55
69
  description: log formatter for json. For Plain Ruby Logger, and for log4r and so on,
56
70
  details to read the REAME.md file.
57
71
  email:
@@ -70,8 +84,11 @@ files:
70
84
  - Rakefile
71
85
  - bin/console
72
86
  - bin/setup
87
+ - examples/log4r_logger.rb
73
88
  - examples/ruby_logger.rb
74
89
  - lib/log_formatter.rb
90
+ - lib/log_formatter/common.rb
91
+ - lib/log_formatter/log4r_json_formatter.rb
75
92
  - lib/log_formatter/ruby_json_formatter.rb
76
93
  - lib/log_formatter/version.rb
77
94
  - log_formatter.gemspec