log_formatter 0.1.0 → 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
  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