active_logger 0.5.0 → 0.6.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
  SHA256:
3
- metadata.gz: 7e41d988455ce14566cfd4f5c3e0b6f8f56ba45e8a1f6da8d23a2e02f1665d0f
4
- data.tar.gz: 0ac73b64c7762edb39bc8b7e6900815585bfb5153914f7150854afa01d157a23
3
+ metadata.gz: de90e33dae18637a255cca38604b48ebff3f3ce945cefa03d5c339693c6b285b
4
+ data.tar.gz: 66a6ea3e78cd15009f4f74ced1b66905df43a639e9a6ec4215e3c8869d849a2a
5
5
  SHA512:
6
- metadata.gz: dee86fdf0440c72c4d2adb9cc8e6a904541e9b1ad0956a509d9cb1bbc342a419305d4b84480f7e4058fe953e23ff2c660768bb990143cf4571f19ce8b4b71419
7
- data.tar.gz: e105ab24cb5d3bed005d044fce0026ba4c54749030d55ffc8626ae1180f4aec8067e47b04fb6d696b6cf6b17206f0f292e216f4891808d4e9fb00f956c5c15e1
6
+ metadata.gz: 4c2d04686048dc136ca574a18c9fd9a1a5873dfa607d9700526e53a7163ca57dadf85ac090475319892dbe1839f53f9c086319f7a25233e03c5fcfd9e8b0fedd
7
+ data.tar.gz: 8d7c1a4abc84a870d8d427d20638e7f1fdf915a271033fd040e62cb83a48e2df9bf48de575aa709696360fe8b1ab730157d9e2095286552f9204f056fb9c50eb
@@ -33,7 +33,7 @@ Metrics/MethodLength:
33
33
 
34
34
  # Configuration parameters: IgnoredMethods.
35
35
  Metrics/AbcSize:
36
- Max: 30
36
+ Enabled: false
37
37
 
38
38
  # ************************
39
39
  # RSPEC
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-04-24 16:26:20 +0300 using RuboCop version 0.82.0.
3
+ # on 2020-04-26 23:35:43 +0300 using RuboCop version 0.82.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_logger (0.5.0)
4
+ active_logger (0.6.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -83,37 +83,26 @@ logger.tagged('API') do
83
83
  end
84
84
  ```
85
85
 
86
- ### Example: Setting the Log Level
86
+ ### Example: Global logger with name
87
87
 
88
88
  ```ruby
89
- ActiveLogger.new STDOUT, level: :info
89
+ ActiveLogger.new STDOUT, name: :logger1, level: :debug
90
+ ActiveLogger.new STDOUT, name: :logger2, level: :info
90
91
 
91
- # or
92
-
93
- ActiveLogger.new do |al|
94
- al.level = :debug
92
+ logger1 = ActiveLogger['logger1']
93
+ logger1.debug? # true
94
+ logger1.debug 'test'
95
95
 
96
- al.appender :stdout
97
- end
96
+ logger2 = ActiveLogger['logger2']
97
+ logger2.debug? # false
98
+ logger2.info 'test2'
98
99
  ```
99
100
 
100
- ### Example: Formatters
101
+ ### Example: Custom formatter
101
102
 
102
- There are 2 standard formatters: `:default` and `:json`.
103
+ You can create your own formatter:
103
104
 
104
105
  ```ruby
105
- ActiveLogger.new STDOUT, formatter: :json
106
-
107
- # or
108
-
109
- ActiveLogger.new do |al|
110
- al.formatter = :json
111
-
112
- al.appender :stdout
113
- end
114
-
115
- # or custom formatter
116
-
117
106
  class Formatter < ActiveLogger::Formatters::Base
118
107
  def call(severity, timestamp, progname, msg)
119
108
  "[#{severity}] [#{timestamp}] #{msg}"
@@ -9,6 +9,14 @@ module ActiveLogger # :nodoc:
9
9
  def new(*args, &block)
10
10
  ActiveLogger::Logging.new(*args, &block)
11
11
  end
12
+
13
+ def [](name)
14
+ ActiveLogger::Repository[name]
15
+ end
16
+
17
+ def []=(name, logger)
18
+ ActiveLogger::Repository[name] = logger
19
+ end
12
20
  end
13
21
 
14
22
  # Formatters
@@ -25,3 +33,4 @@ require File.dirname(__FILE__) + '/active_logger/helpers/appender'
25
33
  require File.dirname(__FILE__) + '/active_logger/tagged_logging'
26
34
  require File.dirname(__FILE__) + '/active_logger/logging'
27
35
  require File.dirname(__FILE__) + '/active_logger/logger'
36
+ require File.dirname(__FILE__) + '/active_logger/repository'
@@ -14,10 +14,22 @@ module ActiveLogger #:nodoc:
14
14
  @progname
15
15
  end
16
16
 
17
+ def name=(name)
18
+ @name = name.nil? ? "<ActiveLogger##{object_id}>" : name
19
+ end
20
+
21
+ def name
22
+ @name
23
+ end
24
+
25
+ def autogenerated_name?
26
+ name.start_with?('<ActiveLogger')
27
+ end
28
+
17
29
  private
18
30
 
19
31
  def reset!
20
- self.progname = nil
32
+ self.name = nil
21
33
  end
22
34
  end
23
35
  end
@@ -15,9 +15,10 @@ module ActiveLogger
15
15
 
16
16
  reset!
17
17
 
18
- self.formatter = options[:formatter] unless options[:formatter].nil?
19
- self.level = options[:level] unless options[:level].nil?
20
- self.progname = options[:progname] unless options[:progname].nil?
18
+ self.formatter = options[:formatter] if options[:formatter]
19
+ self.level = options[:level] if options[:level]
20
+ self.progname = options[:progname] if options[:progname]
21
+ self.name = options[:name] if options[:name]
21
22
 
22
23
  if block_given?
23
24
  block.arity.positive? ? block.call(self) : instance_eval(&block)
@@ -28,7 +29,9 @@ module ActiveLogger
28
29
 
29
30
  assign_appenders = appenders.drop(1)
30
31
  loggers = assign_appenders.inject(appenders[0]) { |appender, acc| acc.extend(ActiveSupport::Logger.broadcast(appender)) }
31
- TaggedLogging.new(loggers)
32
+ logger = TaggedLogging.new(loggers)
33
+ ActiveLogger::Repository[name] = logger unless autogenerated_name?
34
+ logger
32
35
  end
33
36
  end
34
37
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'monitor'
4
+ require 'singleton'
5
+
6
+ module ActiveLogger
7
+ class LoggerNotFound < StandardError # :nodoc:
8
+ def message
9
+ "Could not find a ActiveLogger::Logger instance with the name '#{super}'"
10
+ end
11
+ end
12
+
13
+ class Repository # :nodoc:
14
+ extend MonitorMixin
15
+ include Singleton
16
+
17
+ attr_reader :loggers
18
+
19
+ def initialize
20
+ @loggers = {}
21
+ end
22
+
23
+ def self.[]=(name, logger)
24
+ synchronize { instance.loggers[name] = logger }
25
+ end
26
+
27
+ def self.[](name)
28
+ synchronize do
29
+ instance.__fetch__(name) || (raise ActiveLogger::LoggerNotFound, name)
30
+ end
31
+ end
32
+
33
+ def self.loggers
34
+ synchronize { instance.loggers }
35
+ end
36
+
37
+ def __fetch__(name)
38
+ logger = loggers[name] || loggers[name.to_s]
39
+
40
+ return __fetch__(name.superclass) if logger.nil? && name.respond_to?(:superclass)
41
+
42
+ logger
43
+ end
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveLogger
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Snegirev
@@ -55,6 +55,7 @@ files:
55
55
  - lib/active_logger/helpers/level.rb
56
56
  - lib/active_logger/logger.rb
57
57
  - lib/active_logger/logging.rb
58
+ - lib/active_logger/repository.rb
58
59
  - lib/active_logger/tagged_logging.rb
59
60
  - lib/active_logger/version.rb
60
61
  - log/.keep