semantic_logger 2.5.0 → 2.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
  SHA1:
3
- metadata.gz: 758d812e95b3b1643fa451574e705b85d2fd5870
4
- data.tar.gz: 4a4c5722a4222a1c8dc4d03b5a14318d2677fc3c
3
+ metadata.gz: 829b38191d8058cc50bd558cc22e5af6a10d61d5
4
+ data.tar.gz: b4c7d0fca2c607da3c0804d63b856c62034026ac
5
5
  SHA512:
6
- metadata.gz: 62b30c9df3a64a577c12791dc4ee61d5cbcba35371ee874ea3379c7020c9eb36c915a5385fec6c798724269484e78d7a7471f119ff91e0435ae6fbe1585e1173
7
- data.tar.gz: 1daa2ae91c65e34cdb0d90747d7a80da362af7e7c80c96de270338c0653aa9bee63f878ecc6cba3fda7ee15f863ea1a00a1aec8be5861df8c4baed988c318cd9
6
+ metadata.gz: cbafd799f1667daf4465c482811bde21bfbeae462d6db1c0c5bdebee1b9a4118b933c435134fc9b5ff76e7a84fdf481450fd33ad47c304ec6d0150a171263b16
7
+ data.tar.gz: 9b7dff017d6e41e465000f363d43c839cfeccbc5c23636078f92dc1605c154bcdbef5f12f3d5f5e0d098fd6c818f4bc5ae09a78ba4691f6001becefb7cab106c
data/LICENSE.txt CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2012 Clarity Services, Inc.
189
+ Copyright 2012, 2013 Reid Morrison
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -956,7 +956,7 @@ Marc Bellingrath :: marrrc.b@gmail.com
956
956
  License
957
957
  -------
958
958
 
959
- Copyright 2012,2013 Reid Morrison
959
+ Copyright 2012, 2013 Reid Morrison
960
960
 
961
961
  Licensed under the Apache License, Version 2.0 (the "License");
962
962
  you may not use this file except in compliance with the License.
@@ -15,3 +15,9 @@ module SemanticLogger
15
15
  autoload :Syslog, 'semantic_logger/appender/syslog'
16
16
  end
17
17
  end
18
+
19
+ # Flush all appenders at exit, waiting for outstanding messages on the queue
20
+ # to be written first
21
+ at_exit do
22
+ SemanticLogger.flush
23
+ end
@@ -34,7 +34,7 @@ module SemanticLogger
34
34
  Proc.new do |log|
35
35
  tags = log.tags.collect { |tag| "[#{tag}]" }.join(" ") + " " if log.tags && (log.tags.size > 0)
36
36
 
37
- message = log.message.to_s
37
+ message = log.message.to_s.dup
38
38
  message << " -- " << log.payload.inspect if log.payload
39
39
  message << " -- " << "#{log.exception.class}: #{log.exception.message}\n#{(log.exception.backtrace || []).join("\n")}" if log.exception
40
40
 
@@ -156,22 +156,26 @@ module SemanticLogger
156
156
  # Previous method for supplying tags
157
157
  alias_method :with_tags, :tagged
158
158
 
159
- # Returns [Array] of [String] tags currently active for this thread
159
+ # Returns a copy of the [Array] of [String] tags currently active for this thread
160
160
  # Returns nil if no tags are set
161
161
  def tags
162
- Thread.current[:semantic_logger_tags] ||= []
162
+ # Since tags are stored on a per thread basis this list is thread-safe
163
+ t = Thread.current[:semantic_logger_tags]
164
+ t.nil? ? [] : t.clone
163
165
  end
164
166
 
165
167
  # Add tags to the current scope
166
- # To support: ActiveSupport::TaggedLogging V4 and above
167
168
  def push_tags *tags
168
- Thread.current[:semantic_logger_tags] = self.tags.concat(tags.flatten.collect(&:to_s).reject(&:empty?))
169
+ # Need to flatten and reject empties to support calls from Rails 4
170
+ new_tags = tags.flatten.collect(&:to_s).reject(&:empty?)
171
+ t = Thread.current[:semantic_logger_tags]
172
+ Thread.current[:semantic_logger_tags] = t.nil? ? new_tags : t.concat(new_tags)
169
173
  end
170
174
 
171
175
  # Remove specified number of tags from the current tag list
172
- # To support: ActiveSupport::TaggedLogging V4 and above
173
176
  def pop_tags(quantity=1)
174
- tags.pop(quantity)
177
+ t = Thread.current[:semantic_logger_tags]
178
+ t.pop(quantity) unless t.nil?
175
179
  end
176
180
 
177
181
  # Thread specific context information to be logged with every log entry
@@ -2,10 +2,10 @@ require 'sync_attr'
2
2
 
3
3
  # Logger class variable mix-in
4
4
  #
5
- # Lazy initialize and a logger class variable with instance accessor
5
+ # Lazy initialize a logger class variable with instance accessor
6
6
  #
7
7
  # By including this mix-in into any class it will define a class level logger
8
- # and make it accessible via instance methods
8
+ # and also make it accessible via instance methods
9
9
  #
10
10
  # Example
11
11
  #
@@ -128,7 +128,7 @@ module SemanticLogger
128
128
  def self.logger
129
129
  @@logger ||= begin
130
130
  l = SemanticLogger::Appender::File.new(STDERR, :warn)
131
- l.name = self.class.name
131
+ l.name = name
132
132
  l
133
133
  end
134
134
  end
@@ -212,14 +212,5 @@ module SemanticLogger
212
212
  end
213
213
  end
214
214
 
215
- # Flush all appenders at exit, waiting for outstanding messages on the queue
216
- # to be written first
217
- at_exit do
218
- flush
219
- end
220
-
221
- # Start appender thread on load to workaround intermittent startup issues
222
- # with JRuby 1.8.6 under Trinidad in 1.9 mode
223
- start_appender_thread
224
215
  end
225
216
  end
@@ -99,6 +99,11 @@ module SemanticLogger
99
99
  SemanticLogger::Appender::Wrapper.new(appender, &block)
100
100
  end
101
101
  @@appenders << appender_instance
102
+
103
+ # Start appender thread if it is not already running
104
+ SemanticLogger::Logger.start_appender_thread
105
+
106
+ appender_instance
102
107
  end
103
108
 
104
109
  # Remove an existing appender
@@ -113,7 +118,7 @@ module SemanticLogger
113
118
  # Use SemanticLogger.add_appender and SemanticLogger.remove_appender
114
119
  # to manipulate the active appenders list
115
120
  def self.appenders
116
- @@appenders.dup
121
+ @@appenders.clone
117
122
  end
118
123
 
119
124
  # Wait until all queued log messages have been written and flush all active
@@ -128,12 +133,14 @@ module SemanticLogger
128
133
  # Note: Only appenders that implement the reopen method will be called
129
134
  def self.reopen
130
135
  @@appenders.each {|appender| appender.reopen if appender.respond_to?(:reopen)}
136
+ # After a fork the appender thread is not running, start it if it is not running
137
+ SemanticLogger::Logger.start_appender_thread
131
138
  end
132
139
 
133
140
  ############################################################################
134
141
  protected
135
142
 
136
- @@appenders = ThreadSafe::Array.new
143
+ @@appenders = ThreadSafe::Array.new
137
144
 
138
145
  ############################################################################
139
146
  private
@@ -1,3 +1,3 @@
1
1
  module SemanticLogger #:nodoc
2
- VERSION = "2.5.0"
2
+ VERSION = "2.6.0"
3
3
  end
data/test/logger_test.rb CHANGED
@@ -38,9 +38,9 @@ class LoggerTest < Test::Unit::TestCase
38
38
  end
39
39
  end
40
40
 
41
- context "with_tags logging" do
41
+ context "tagged logging" do
42
42
  should "add tags to log entries" do
43
- @logger.with_tags('12345', 'DJHSFK') do
43
+ @logger.tagged('12345', 'DJHSFK') do
44
44
  @logger.info('Hello world')
45
45
  SemanticLogger.flush
46
46
  assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:.+\] \[12345\] \[DJHSFK\] LoggerTest -- Hello world/, @mock_logger.message
@@ -48,8 +48,8 @@ class LoggerTest < Test::Unit::TestCase
48
48
  end
49
49
 
50
50
  should "add embedded tags to log entries" do
51
- @logger.with_tags('First Level', 'tags') do
52
- @logger.with_tags('Second Level') do
51
+ @logger.tagged('First Level', 'tags') do
52
+ @logger.tagged('Second Level') do
53
53
  @logger.info('Hello world')
54
54
  SemanticLogger.flush
55
55
  assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:.+\] \[First Level\] \[tags\] \[Second Level\] LoggerTest -- Hello world/, @mock_logger.message
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-08 00:00:00.000000000 Z
11
+ date: 2013-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sync_attr
@@ -68,7 +68,7 @@ files:
68
68
  - test/loggable_test.rb
69
69
  - test/logger_test.rb
70
70
  - test/mock_logger.rb
71
- homepage: https://github.com/ClarityServices/semantic_logger
71
+ homepage: https://github.com/reidmorrison/semantic_logger
72
72
  licenses:
73
73
  - Apache License V2.0
74
74
  metadata: {}
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubyforge_project:
91
- rubygems_version: 2.0.3
91
+ rubygems_version: 2.1.11
92
92
  signing_key:
93
93
  specification_version: 4
94
94
  summary: Improved logging for Ruby