semantic_logger 2.2.0 → 2.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
  SHA1:
3
- metadata.gz: cd64eb04f0be456dd95ec325d6ac00af3dba49c1
4
- data.tar.gz: 2d48aa4423c72c71ba7cf42e370d4dd5b21adc47
3
+ metadata.gz: e40f9cdb04c659a6463e341124bfa599fc6e1573
4
+ data.tar.gz: 837e26e9d736231379778a1dc031a3aa1a9b1da5
5
5
  SHA512:
6
- metadata.gz: 6dc6dca8b8c4553acedbcc639f5daaeee367043816d23ad6816a0be9360b8529df18a3145fb0717b06a8964d1028bdccf61117e6edcfe5a1f719882cb7058c0b
7
- data.tar.gz: e552b8b33ef2b967c3d18321cb8f1dd9e2d3173a57eaef32f3e25261767b0864ba6735d54e12a4ceb3dc0e7038077f10727fc72eb049130336b04621bcda7d2b
6
+ metadata.gz: 0289dacbdb9bdee70f9efe3b2203f7452863305cb562237c2067ec434739a8ae0af7b04eb14b57aff79f8783c3d7fc414f59890dcf2445fb229a6ed0139b7c48
7
+ data.tar.gz: a50be52d3059bef02aa2d77080dee298c28d02f6da1b4d749f678511285af4be64a6849a385f4cfbef5ed993b58ee5743a0ba164249fac9db3b7ae84ed22a0ac
data/Rakefile CHANGED
@@ -5,28 +5,11 @@ require 'rubygems'
5
5
  require 'rubygems/package'
6
6
  require 'rake/clean'
7
7
  require 'rake/testtask'
8
- require 'date'
9
8
  require 'semantic_logger/version'
10
9
 
11
10
  desc "Build gem"
12
11
  task :gem do |t|
13
- gemspec = Gem::Specification.new do |spec|
14
- spec.name = 'semantic_logger'
15
- spec.version = SemanticLogger::VERSION
16
- spec.platform = Gem::Platform::RUBY
17
- spec.authors = ['Reid Morrison']
18
- spec.email = ['reidmo@gmail.com']
19
- spec.homepage = 'https://github.com/ClarityServices/semantic_logger'
20
- spec.date = Date.today.to_s
21
- spec.summary = "Improved logging for Ruby"
22
- spec.description = "Semantic Logger takes logging in Ruby to a new level by adding several new capabilities to the commonly used Logging API"
23
- spec.files = FileList["./**/*"].exclude(/\.gem$/, /\.log$/,/nbproject/).map{|f| f.sub(/^\.\//, '')}
24
- spec.license = "Apache License V2.0"
25
- spec.has_rdoc = true
26
- spec.add_dependency 'sync_attr', '>= 1.0'
27
- spec.add_dependency 'thread_safe', '>= 0.1.0'
28
- end
29
- Gem::Package.build gemspec
12
+ Gem::Package.build(Gem::Specification.load('semantic_logger.gemspec'))
30
13
  end
31
14
 
32
15
  desc "Run Test Suite"
@@ -8,6 +8,21 @@
8
8
  #
9
9
  module SemanticLogger
10
10
  module Appender
11
+
12
+ # Formatting & colors used by optional colorized_formatter
13
+ module AnsiColors
14
+ CLEAR = "\e[0m"
15
+ BOLD = "\e[1m"
16
+ BLACK = "\e[30m"
17
+ RED = "\e[31m"
18
+ GREEN = "\e[32m"
19
+ YELLOW = "\e[33m"
20
+ BLUE = "\e[34m"
21
+ MAGENTA = "\e[35m"
22
+ CYAN = "\e[36m"
23
+ WHITE = "\e[37m"
24
+ end
25
+
11
26
  class Base < SemanticLogger::Base
12
27
  attr_accessor :formatter
13
28
 
@@ -29,6 +44,39 @@ module SemanticLogger
29
44
  end
30
45
  end
31
46
 
47
+ # Optional log formatter to colorize log output
48
+ # To use this formatter
49
+ # SemanticLogger.add_appender($stdout, nil, &SemanticLogger::Logger.colorized_formatter)
50
+ #
51
+ # 2011-07-19 14:36:15.660 D [1149:ScriptThreadProcess] Rails -- Hello World
52
+ def self.colorized_formatter
53
+ Proc.new do |log|
54
+ colors = SemanticLogger::Appender::AnsiColors
55
+ tags = log.tags.collect { |tag| "[#{colors::CYAN}#{tag}#{colors::CLEAR}]" }.join(' ') + ' ' if log.tags && (log.tags.size > 0)
56
+
57
+ message = log.message.to_s.dup
58
+ message << " -- " << log.payload.inspect if log.payload
59
+ message << " -- " << "#{colors::BOLD}#{log.exception.class}: #{log.exception.message}#{colors::CLEAR}\n#{(log.exception.backtrace || []).join("\n")}" if log.exception
60
+
61
+ duration_str = log.duration ? "(#{colors::BOLD}#{'%.1f' % log.duration}ms#{colors::CLEAR}) " : ''
62
+
63
+ level_color = case log.level
64
+ when :trace
65
+ colors::MAGENTA
66
+ when :debug
67
+ colors::CYAN
68
+ when :info
69
+ colors::GREEN
70
+ when :warn
71
+ colors::YELLOW
72
+ when :error, :fatal
73
+ colors::RED
74
+ end
75
+
76
+ "#{SemanticLogger::Appender::Base.formatted_time(log.time)} #{level_color}#{colors::BOLD}#{log.level.to_s[0..0].upcase}#{colors::CLEAR} [#{$$}:#{log.thread_name}] #{tags}#{duration_str}#{level_color}#{log.name}#{colors::CLEAR} -- #{message}"
77
+ end
78
+ end
79
+
32
80
  ############################################################################
33
81
  protected
34
82
 
@@ -161,22 +161,20 @@ module SemanticLogger
161
161
  # Returns [Array] of [String] tags currently active for this thread
162
162
  # Returns nil if no tags are set
163
163
  def tags
164
- Thread.current[:semantic_logger_tags]
164
+ Thread.current[:semantic_logger_tags] ||= []
165
165
  end
166
166
 
167
167
  # Add tags to the current scope
168
168
  # To support: ActiveSupport::TaggedLogging V4 and above
169
169
  def push_tags *tags
170
170
  # Check for nil tags
171
- Thread.current[:semantic_logger_tags] = (self.tags || []) + tags if tags
171
+ Thread.current[:semantic_logger_tags] = self.tags.concat(tags)
172
172
  end
173
173
 
174
174
  # Remove specified number of tags from the current tag list
175
175
  # To support: ActiveSupport::TaggedLogging V4 and above
176
- def pop_tags(quantity)
177
- if tags = self.tags
178
- Thread.current[:semantic_logger_tags] = tags.pop(quantity)
179
- end
176
+ def pop_tags(quantity=1)
177
+ tags.pop(quantity)
180
178
  end
181
179
 
182
180
  # Thread specific context information to be logged with every log entry
@@ -5,8 +5,16 @@ require 'thread_safe'
5
5
  module SemanticLogger
6
6
  class Logger < Base
7
7
 
8
- # Add unused formatter to support Rails 4 logging
8
+ # DO NOT USE. Adding unused formatter to support Rails 4 logging
9
9
  # Formatters must be set at the appender level, not at the logger level
10
+ #
11
+ # Due to the following code in Rails::Server#start that cannot be changed
12
+ # without patching the entire method
13
+ # console = ActiveSupport::Logger.new($stdout)
14
+ # console.formatter = Rails.logger.formatter
15
+ # console.level = Rails.logger.level
16
+ #
17
+ # Rails.logger.extend(ActiveSupport::Logger.broadcast(console))
10
18
  attr_accessor :formatter
11
19
 
12
20
  # Returns a Logger instance
@@ -1,3 +1,3 @@
1
1
  module SemanticLogger #:nodoc
2
- VERSION = "2.2.0"
2
+ VERSION = "2.3.0"
3
3
  end
data/test/logger_test.rb CHANGED
@@ -21,6 +21,7 @@ class LoggerTest < Test::Unit::TestCase
21
21
  @logger = SemanticLogger::Logger.new(self.class, :trace)
22
22
  @hash = { :session_id => 'HSSKLEU@JDK767', :tracking_number => 12345 }
23
23
  @hash_str = @hash.inspect.sub("{", "\\{").sub("}", "\\}")
24
+ assert_equal [], @logger.tags
24
25
  end
25
26
 
26
27
  teardown do
@@ -53,6 +54,9 @@ class LoggerTest < Test::Unit::TestCase
53
54
  SemanticLogger.flush
54
55
  assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ \w \[\d+:.+\] \[First Level\] \[tags\] \[Second Level\] LoggerTest -- Hello world/, @mock_logger.message
55
56
  end
57
+ assert_equal 2, @logger.tags.count, @logger.tags
58
+ assert_equal 'First Level', @logger.tags.first
59
+ assert_equal 'tags', @logger.tags.last
56
60
  end
57
61
  end
58
62
 
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.2.0
4
+ version: 2.3.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-08-02 00:00:00.000000000 Z
11
+ date: 2013-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sync_attr
@@ -46,12 +46,6 @@ executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
- - Gemfile
50
- - Gemfile.lock
51
- - LICENSE.txt
52
- - README.md
53
- - Rakefile
54
- - lib/semantic_logger.rb
55
49
  - lib/semantic_logger/appender/base.rb
56
50
  - lib/semantic_logger/appender/file.rb
57
51
  - lib/semantic_logger/appender/mongodb.rb
@@ -61,7 +55,10 @@ files:
61
55
  - lib/semantic_logger/logger.rb
62
56
  - lib/semantic_logger/semantic_logger.rb
63
57
  - lib/semantic_logger/version.rb
64
- - others.txt
58
+ - lib/semantic_logger.rb
59
+ - LICENSE.txt
60
+ - Rakefile
61
+ - README.md
65
62
  - test/appender_file_test.rb
66
63
  - test/appender_mongodb_test.rb
67
64
  - test/appender_wrapper_test.rb
@@ -92,4 +89,10 @@ rubygems_version: 2.0.3
92
89
  signing_key:
93
90
  specification_version: 4
94
91
  summary: Improved logging for Ruby
95
- test_files: []
92
+ test_files:
93
+ - test/appender_file_test.rb
94
+ - test/appender_mongodb_test.rb
95
+ - test/appender_wrapper_test.rb
96
+ - test/loggable_test.rb
97
+ - test/logger_test.rb
98
+ - test/mock_logger.rb
data/Gemfile DELETED
@@ -1,10 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- group :test do
4
- gem "shoulda"
5
- gem "mongo"
6
- gem "bson_ext", :platform => 'ruby'
7
- end
8
-
9
- gem "sync_attr"
10
- gem "thread_safe"
data/Gemfile.lock DELETED
@@ -1,39 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activesupport (3.2.13)
5
- i18n (= 0.6.1)
6
- multi_json (~> 1.0)
7
- atomic (1.1.8)
8
- bourne (1.4.0)
9
- mocha (~> 0.13.2)
10
- bson (1.8.5)
11
- bson_ext (1.8.5)
12
- bson (~> 1.8.5)
13
- i18n (0.6.1)
14
- metaclass (0.0.1)
15
- mocha (0.13.3)
16
- metaclass (~> 0.0.1)
17
- mongo (1.8.5)
18
- bson (~> 1.8.5)
19
- multi_json (1.7.2)
20
- shoulda (3.4.0)
21
- shoulda-context (~> 1.0, >= 1.0.1)
22
- shoulda-matchers (~> 1.0, >= 1.4.1)
23
- shoulda-context (1.1.1)
24
- shoulda-matchers (1.5.6)
25
- activesupport (>= 3.0.0)
26
- bourne (~> 1.3)
27
- sync_attr (1.0.0)
28
- thread_safe (0.1.0)
29
- atomic
30
-
31
- PLATFORMS
32
- ruby
33
-
34
- DEPENDENCIES
35
- bson_ext
36
- mongo
37
- shoulda
38
- sync_attr
39
- thread_safe
data/others.txt DELETED
@@ -1,5 +0,0 @@
1
- logback
2
- logging
3
- log4r
4
- central_logger
5
- whoops