active_logger 0.5.0 → 0.6.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
  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