active_logger 0.2.0 → 0.3.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: a1a35016af400de6d23b4b50eee7a458714a0c8b293c7bb6e58cdca42b7f099a
4
- data.tar.gz: f7803ae045906c0c07146f7d9adb9a619bbac0ace29fcc6b69aa10b783e1ad73
3
+ metadata.gz: 57d404bf8defccccc9a8f05b57bf3779a512e5ac67a095ac1c994aa487fb7ee3
4
+ data.tar.gz: df5fa3f1b23c19126d86e197240c215ea6bedd9fce870e6ad0bfdda149f6dace
5
5
  SHA512:
6
- metadata.gz: da2ed14c7c27986ac84027907af0edc17c90ed91209657ca2b5b1627e3cd079fafd647504aef5d4aae4b773e7506886f13b089c1c0f5987f0d94cc0c2db5e0dc
7
- data.tar.gz: 1007b8ecdd143e6822e0296493801768e933aa32791243d8ae1280391c57e7eccc681c112a81d9791c9fad4b068a91c9b031b2be20df79b1e0404f45a64bd0b7
6
+ metadata.gz: b49cb0632467d2174d3f3f75e3abc2e54e1215ae4ff67f7bcf111048f6e24ef533a50ab75c6cb7880b4cd8176f03d3a09e6df7ae0cf46d8e79aa45676c2763e4
7
+ data.tar.gz: 76f8ee7fa78bab1250bcece99cb1f46edaeeab33dbab9d4bcd661e411feadf74e1157f8d9f3aeffb2b0f4b95a3e226e23f6d4dcf94e35b9d34dfbc472fce7cfb
data/.rubocop.yml CHANGED
@@ -14,3 +14,7 @@ Metrics/BlockLength:
14
14
 
15
15
  Metrics/MethodLength:
16
16
  Enabled: false
17
+
18
+ # Configuration parameters: IgnoredMethods.
19
+ Metrics/AbcSize:
20
+ Max: 30
data/.rubocop_todo.yml CHANGED
@@ -1,22 +1,7 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-04-19 23:21:57 +0300 using RuboCop version 0.82.0.
3
+ # on 2020-04-22 16:12:47 +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
7
7
  # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 1
10
- Lint/UselessAssignment:
11
- Exclude:
12
- - 'lib/active_logger/logger.rb'
13
-
14
- # Offense count: 1
15
- # Configuration parameters: IgnoredMethods.
16
- Metrics/AbcSize:
17
- Max: 19
18
-
19
- # Offense count: 1
20
- # Configuration parameters: IgnoredMethods.
21
- Metrics/CyclomaticComplexity:
22
- Max: 7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_logger (0.2.0)
4
+ active_logger (0.3.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
@@ -24,7 +24,8 @@ module ActiveLogger
24
24
  end
25
25
 
26
26
  assign_appenders = appenders.drop(1)
27
- assign_appenders.inject(appenders[0]) { |appender, acc| acc.extend(ActiveSupport::Logger.broadcast(appender)) }
27
+ loggers = assign_appenders.inject(appenders[0]) { |appender, acc| acc.extend(ActiveSupport::Logger.broadcast(appender)) }
28
+ TaggedLogging.new(loggers)
28
29
  end
29
30
 
30
31
  def loggable(type, options = {})
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/module/delegation'
4
+ require 'active_support/core_ext/object/blank'
5
+
6
+ module ActiveLogger
7
+ module TaggedLogging # :nodoc:
8
+ module Formatter # :nodoc:
9
+ # This method is invoked when a log event occurs.
10
+ def call(severity, timestamp, progname, msg)
11
+ super(severity, timestamp, progname, "#{tags_text}#{msg}")
12
+ end
13
+
14
+ def tagged(*tags)
15
+ new_tags = push_tags(*tags)
16
+ yield self
17
+ ensure
18
+ pop_tags(new_tags.size)
19
+ end
20
+
21
+ def push_tags(*tags)
22
+ @tags_text = nil
23
+ tags.flatten!
24
+ tags.reject!(&:blank?)
25
+ current_tags.concat tags
26
+ tags
27
+ end
28
+
29
+ def pop_tags(size = 1)
30
+ @tags_text = nil
31
+ current_tags.pop size
32
+ end
33
+
34
+ def clear_tags!
35
+ @tags_text = nil
36
+ current_tags.clear
37
+ end
38
+
39
+ def current_tags
40
+ # We use our object ID here to avoid conflicting with other instances
41
+ thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{object_id}"
42
+ Thread.current[thread_key] ||= []
43
+ end
44
+
45
+ def tags_text
46
+ @tags_text ||= begin
47
+ tags = current_tags
48
+ if tags.one?
49
+ "[#{tags[0]}] "
50
+ elsif tags.any?
51
+ tags.collect { |tag| "[#{tag}] " }.join
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ module LocalTagStorage # :nodoc:
58
+ attr_accessor :current_tags
59
+
60
+ def self.extended(base)
61
+ base.current_tags = []
62
+ end
63
+ end
64
+
65
+ def self.new(logger)
66
+ logger = logger.dup
67
+
68
+ logger.formatter =
69
+ if logger.formatter
70
+ logger.formatter.dup
71
+ else
72
+ # Ensure we set a default formatter so we aren't extending nil!
73
+ ActiveSupport::Logger::SimpleFormatter.new
74
+ end
75
+
76
+ logger.formatter.extend Formatter
77
+ logger.extend(self)
78
+ end
79
+
80
+ delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter
81
+
82
+ def tagged(*tags)
83
+ if block_given?
84
+ formatter.tagged(*tags) { yield self }
85
+ else
86
+ logger = ActiveLogger::TaggedLogging.new(self)
87
+ logger.formatter.extend LocalTagStorage
88
+ logger.push_tags(*formatter.current_tags, *tags)
89
+ logger
90
+ end
91
+ end
92
+
93
+ def flush
94
+ clear_tags!
95
+ super if defined?(super)
96
+ end
97
+ end
98
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveLogger
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/active_logger.rb CHANGED
@@ -15,4 +15,5 @@ end
15
15
  require File.dirname(__FILE__) + '/active_logger/helpers/base'
16
16
  require File.dirname(__FILE__) + '/active_logger/helpers/appender'
17
17
 
18
+ require File.dirname(__FILE__) + '/active_logger/tagged_logging'
18
19
  require File.dirname(__FILE__) + '/active_logger/logger'
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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Snegirev
@@ -49,6 +49,7 @@ files:
49
49
  - lib/active_logger/helpers/appender.rb
50
50
  - lib/active_logger/helpers/base.rb
51
51
  - lib/active_logger/logger.rb
52
+ - lib/active_logger/tagged_logging.rb
52
53
  - lib/active_logger/version.rb
53
54
  - log/.keep
54
55
  homepage: https://github.com/jurrick/active_logger