elastic-logger 0.5.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f706187e7572cff284bce76972f00b348e37ac3
4
- data.tar.gz: c1f8c9b90bb6f127b39f2cc444954574021d4dc8
3
+ metadata.gz: 1f30dcd658a8374818b9e9cc9adf7739843470e7
4
+ data.tar.gz: 12aac98849fd19285474ffb710e1e1ff6a97ee9c
5
5
  SHA512:
6
- metadata.gz: 0cc347c8cabd2e79eeb39fc1f606bfed4f1e27bf708268a4e8ddef23052d18b89de245582a5606c2794e07fec6c552a4bd858b4a6be00bffb2dd8114ed6ebf58
7
- data.tar.gz: c4dad1793d30c40f5ea0abcece658a52a7204750041f18a575b07e63b8080ae69680e7d22193bf5bfd0269dd230e43b0fa938b8f9b7b634c2e317f756882077a
6
+ metadata.gz: cab4d67cd8c408a7f9a25ca59c6a5d6e7bb4b206f86ed4691a608e0a5ff85d0ce12c3c06b2579e96b11e906e0cc06dc6309b1ab784f0818e2e16e483dcb5e022
7
+ data.tar.gz: abeeb8ec4d25528616acf499d4e4a51086b87b50b99b7fa53348156cb02363d45d437f415b4a041c5eb853953d1cf0021d4afcf85c7a38df5e4c8d4c3af7deac
data/README.md CHANGED
@@ -41,6 +41,7 @@ With this file we create two logs, one which will log to elastic, and one to sta
41
41
  ```yml
42
42
  sidekiq_monitor:
43
43
  writer: 'InfaktLogger::ElkWriter'
44
+ level: 'debug' # log level, one of debug, error, fatal, info, unknown, and warn
44
45
  delete:
45
46
  type: 'standard' # never if you want to keep that log
46
47
  unit: 'days' # One of seconds, minutes, hours, days, weeks, months, or years.
@@ -51,6 +52,7 @@ sidekiq_monitor:
51
52
  unit_count: 2 # The number of unit (s). unit_count * unit will be calculated out to the relative number of seconds.
52
53
  api_requests:
53
54
  writer: 'InfaktLogger::DiskWriter'
55
+ level: 'warn'
54
56
  ```
55
57
  ### Usage
56
58
 
@@ -1,13 +1,12 @@
1
1
  module ElasticLogger
2
2
  class Configuration
3
- attr_accessor :host, :types_file, :path, :prefix, :log_level
3
+ attr_accessor :host, :types_file, :path, :prefix
4
4
 
5
5
  def initialize
6
6
  @host = 'localhost:9200'
7
7
  @types_file = 'config/elastic_log_types.yml'
8
8
  @path = 'log'
9
9
  @prefix = ''
10
- @log_level = ::Logger::DEBUG
11
10
  end
12
11
  end
13
12
  end
@@ -1,10 +1,12 @@
1
+ require 'elastic-logger/message_parser'
1
2
  require 'elastic-logger/types'
2
3
 
3
4
  module ElasticLogger
4
5
  class Logger
5
6
 
6
- def initialize(name)
7
+ def initialize(name, log_level = nil)
7
8
  @name = name.to_s
9
+ @log_level = log_level
8
10
  end
9
11
 
10
12
  # def debug(hash)
@@ -15,31 +17,26 @@ module ElasticLogger
15
17
  # def warn(hash)
16
18
  %w(debug error fatal info unknown warn).each do |severity|
17
19
  define_method(severity) do |hash|
18
- log(hash, severity.to_s.upcase)
20
+ log(hash, severity)
19
21
  end
20
22
  end
21
23
 
22
- def log(msg, severity = 'UNKNOWN')
23
- return true if ::Logger.const_get(severity) < config.log_level
24
+ def log(msg, severity = 'unknown')
25
+ return true if skip_logging?(severity)
24
26
 
25
- writer.log(severity, format(msg))
27
+ writer.log(format_severity(severity), format_message(msg))
26
28
  true
27
29
  end
28
30
 
29
31
  private
30
32
  attr_reader :name
31
33
 
32
- def writer
33
- writer = logs.fetch(name, default).fetch("writer")
34
- Object.const_get(writer).new(name: log_name, config: config)
34
+ def skip_logging?(severity)
35
+ log_levels[severity] < log_levels[log_level]
35
36
  end
36
37
 
37
- def format(msg)
38
- case msg
39
- when String then { msg: msg }
40
- when Array then msg.map.with_index { |v, i| [i, v] }.to_h
41
- else msg
42
- end
38
+ def writer
39
+ Object.const_get(log_writer).new(name: log_name, config: config)
43
40
  end
44
41
 
45
42
  def log_name
@@ -47,15 +44,33 @@ module ElasticLogger
47
44
  end
48
45
 
49
46
  def config
50
- @config ||= ElasticLogger.configuration
47
+ @config ||= ::ElasticLogger.configuration
48
+ end
49
+
50
+ def format_message(msg)
51
+ ::ElasticLogger::MessageParser.new.(msg)
52
+ end
53
+
54
+ def log_writer
55
+ log_type.fetch('writer')
56
+ end
57
+
58
+ def log_level
59
+ @log_level ||= log_type.fetch('level', 'info')
51
60
  end
52
61
 
53
- def logs
54
- @@logs ||= ElasticLogger::Types.new.all
62
+ def log_type
63
+ @log_type ||= ::ElasticLogger::Types.new.find(name)
64
+ end
65
+
66
+ def log_levels
67
+ @log_levels ||= Hash.new do |hash, key|
68
+ hash[key] = ::Logger.const_get(format_severity(key))
69
+ end
55
70
  end
56
71
 
57
- def default
58
- { "writer" => "ElasticLogger::NullLogger" }
72
+ def format_severity(severity)
73
+ severity.to_s.upcase
59
74
  end
60
75
  end
61
76
  end
@@ -0,0 +1,11 @@
1
+ module ElasticLogger
2
+ class MessageParser
3
+ def call(message)
4
+ case message
5
+ when String then { msg: message }
6
+ when Array then message.map.with_index { |v, i| [i, v] }.to_h
7
+ else message
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,6 @@
1
1
  first_sample_log:
2
2
  writer: 'ElasticLogger::ElkWriter'
3
+ level: 'debug' # log level
3
4
  delete:
4
5
  type: 'standard' # never if you want to keep that log
5
6
  unit: 'days' # One of seconds, minutes, hours, days, weeks, months, or years.
@@ -10,3 +11,4 @@ first_sample_log:
10
11
  unit_count: 2 # The number of unit (s). unit_count * unit will be calculated out to the relative number of seconds.
11
12
  second_sample_log:
12
13
  writer: 'InfaktLogger::DiskWriter'
14
+ level: 'warn'
@@ -8,6 +8,10 @@ module ElasticLogger
8
8
  logs.select { |_, values| values.fetch("writer") == writer }
9
9
  end
10
10
 
11
+ def find(name)
12
+ logs.fetch(name, default)
13
+ end
14
+
11
15
  private
12
16
 
13
17
  def logs
@@ -17,5 +21,9 @@ module ElasticLogger
17
21
  def config
18
22
  ElasticLogger.configuration
19
23
  end
24
+
25
+ def default
26
+ { "writer" => "ElasticLogger::NullLogger", "level" => "debug" }
27
+ end
20
28
  end
21
29
  end
@@ -1,3 +1,3 @@
1
1
  module ElasticLogger
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Radosław Woźnik
@@ -57,6 +57,7 @@ files:
57
57
  - lib/elastic-logger/elk_writer.rb
58
58
  - lib/elastic-logger/generator.rb
59
59
  - lib/elastic-logger/logger.rb
60
+ - lib/elastic-logger/message_parser.rb
60
61
  - lib/elastic-logger/null_writer.rb
61
62
  - lib/elastic-logger/railtie.rb
62
63
  - lib/elastic-logger/rotate.rake