logging 2.2.2 → 2.3.1
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 +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +5 -3
- data/History.txt +21 -0
- data/Rakefile +2 -2
- data/examples/appenders.rb +1 -1
- data/examples/mdc.rb +2 -2
- data/lib/logging/appender.rb +5 -25
- data/lib/logging/appenders/buffering.rb +3 -3
- data/lib/logging/appenders/console.rb +27 -7
- data/lib/logging/appenders/file.rb +42 -21
- data/lib/logging/appenders/io.rb +14 -11
- data/lib/logging/appenders/rolling_file.rb +48 -24
- data/lib/logging/appenders/string_io.rb +1 -1
- data/lib/logging/appenders/syslog.rb +2 -3
- data/lib/logging/filter.rb +11 -4
- data/lib/logging/filters/level.rb +10 -7
- data/lib/logging/filters.rb +1 -1
- data/lib/logging/layouts/parseable.rb +1 -1
- data/lib/logging/layouts/pattern.rb +1 -1
- data/lib/logging/log_event.rb +7 -6
- data/lib/logging/logger.rb +15 -13
- data/lib/logging/proxy.rb +1 -1
- data/lib/logging/version.rb +1 -1
- data/lib/logging.rb +21 -6
- data/logging.gemspec +12 -13
- data/test/appenders/test_buffered_io.rb +16 -18
- data/test/appenders/test_console.rb +47 -12
- data/test/appenders/test_file.rb +38 -23
- data/test/appenders/test_rolling_file.rb +12 -12
- data/test/layouts/test_json.rb +1 -1
- data/test/layouts/test_nested_exceptions.rb +6 -6
- data/test/layouts/test_pattern.rb +1 -1
- data/test/layouts/test_yaml.rb +1 -1
- data/test/setup.rb +9 -5
- data/test/test_log_event.rb +2 -2
- data/test/test_logging.rb +29 -4
- metadata +12 -13
data/lib/logging/filters.rb
CHANGED
@@ -103,7 +103,7 @@ module Logging::Layouts
|
|
103
103
|
'message' => 'format_obj(event.data)'.freeze,
|
104
104
|
'file' => 'event.file'.freeze,
|
105
105
|
'line' => 'event.line'.freeze,
|
106
|
-
'method' => 'event.
|
106
|
+
'method' => 'event.method_name'.freeze,
|
107
107
|
'hostname' => "'#{Socket.gethostname}'".freeze,
|
108
108
|
'pid' => 'Process.pid'.freeze,
|
109
109
|
'millis' => 'Integer((event.time-@created_at)*1000)'.freeze,
|
@@ -307,7 +307,7 @@ module Logging::Layouts
|
|
307
307
|
'l' => '::Logging::LNAMES[event.level]'.freeze,
|
308
308
|
'L' => 'event.line'.freeze,
|
309
309
|
'm' => 'format_obj(event.data)'.freeze,
|
310
|
-
'M' => 'event.
|
310
|
+
'M' => 'event.method_name'.freeze,
|
311
311
|
'h' => "'#{Socket.gethostname}'".freeze,
|
312
312
|
'p' => 'Process.pid'.freeze,
|
313
313
|
'r' => 'Integer((event.time-@created_at)*1000).to_s'.freeze,
|
data/lib/logging/log_event.rb
CHANGED
@@ -12,10 +12,11 @@ module Logging
|
|
12
12
|
# * $3 == method name (might be nil)
|
13
13
|
CALLER_RGXP = %r/([-\.\/\(\)\w]+):(\d+)(?::in `([^']+)')?/o
|
14
14
|
#CALLER_INDEX = 2
|
15
|
-
CALLER_INDEX = ((defined?
|
15
|
+
CALLER_INDEX = ((defined?(JRUBY_VERSION) && JRUBY_VERSION > '1.6' && JRUBY_VERSION < '9.0') ||
|
16
|
+
(defined?(RUBY_ENGINE) && RUBY_ENGINE[%r/^rbx/i])) ? 1 : 2
|
16
17
|
# :startdoc:
|
17
18
|
|
18
|
-
attr_accessor :logger, :level, :data, :time, :file, :line, :
|
19
|
+
attr_accessor :logger, :level, :data, :time, :file, :line, :method_name
|
19
20
|
|
20
21
|
# call-seq:
|
21
22
|
# LogEvent.new( logger, level, [data], caller_tracing )
|
@@ -36,15 +37,15 @@ module Logging
|
|
36
37
|
return if stack.nil?
|
37
38
|
|
38
39
|
match = CALLER_RGXP.match(stack)
|
39
|
-
self.file
|
40
|
-
self.line
|
41
|
-
self.
|
40
|
+
self.file = match[1]
|
41
|
+
self.line = Integer(match[2])
|
42
|
+
self.method_name = match[3] unless match[3].nil?
|
42
43
|
|
43
44
|
if (bp = ::Logging.basepath) && !bp.empty? && file.index(bp) == 0
|
44
45
|
self.file = file.slice(bp.length + 1, file.length - bp.length)
|
45
46
|
end
|
46
47
|
else
|
47
|
-
self.file = self.line = self.
|
48
|
+
self.file = self.line = self.method_name = ''
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
data/lib/logging/logger.rb
CHANGED
@@ -24,8 +24,6 @@ module Logging
|
|
24
24
|
#
|
25
25
|
class Logger
|
26
26
|
|
27
|
-
@mutex = Mutex.new # :nodoc:
|
28
|
-
|
29
27
|
# Returns the root logger.
|
30
28
|
def self.root
|
31
29
|
::Logging::Repository.instance[:root]
|
@@ -48,7 +46,10 @@ module Logging
|
|
48
46
|
logger = repo[name]
|
49
47
|
return logger unless logger.nil?
|
50
48
|
|
51
|
-
|
49
|
+
# Share the same mutex that's used by 'define_log_methods' because
|
50
|
+
# it iterates over the hash of loggers, and adding a new key to a hash
|
51
|
+
# while iterating over it produces an error.
|
52
|
+
::Logging::Logger.mutex.synchronize do
|
52
53
|
logger = repo[name]
|
53
54
|
return logger unless logger.nil? # thread-safe double checking
|
54
55
|
|
@@ -118,6 +119,14 @@ module Logging
|
|
118
119
|
code.join("\n")
|
119
120
|
end
|
120
121
|
|
122
|
+
@mutex = ReentrantMutex.new
|
123
|
+
|
124
|
+
# Returns a global ReentrantMutex for use when creating Logger instances
|
125
|
+
# and/or updating log levels.
|
126
|
+
def self.mutex
|
127
|
+
@mutex
|
128
|
+
end
|
129
|
+
|
121
130
|
attr_reader :name, :parent, :additive, :caller_tracing
|
122
131
|
|
123
132
|
# call-seq:
|
@@ -411,7 +420,7 @@ module Logging
|
|
411
420
|
def define_log_methods( force = false, code = nil )
|
412
421
|
return if has_own_level? and !force
|
413
422
|
|
414
|
-
::Logging::Logger.
|
423
|
+
::Logging::Logger.mutex.synchronize do
|
415
424
|
::Logging::Logger.define_log_methods(self)
|
416
425
|
::Logging::Repository.instance.children(name).each do |child|
|
417
426
|
child.define_log_methods
|
@@ -423,12 +432,6 @@ module Logging
|
|
423
432
|
# :stopdoc:
|
424
433
|
public
|
425
434
|
|
426
|
-
@reentrant_mutex = ReentrantMutex.new
|
427
|
-
|
428
|
-
def self._reentrant_mutex
|
429
|
-
@reentrant_mutex
|
430
|
-
end
|
431
|
-
|
432
435
|
# call-seq:
|
433
436
|
# _meta_eval( code )
|
434
437
|
#
|
@@ -511,6 +514,5 @@ module Logging
|
|
511
514
|
end
|
512
515
|
# :startdoc:
|
513
516
|
|
514
|
-
end
|
515
|
-
end
|
516
|
-
|
517
|
+
end
|
518
|
+
end
|
data/lib/logging/proxy.rb
CHANGED
@@ -47,7 +47,7 @@ module Logging
|
|
47
47
|
|
48
48
|
# All hail the magic of method missing. Here is where we are going to log
|
49
49
|
# the method call and then forward to the proxied object. The return value
|
50
|
-
# from the proxied
|
50
|
+
# from the proxied object method call is passed back.
|
51
51
|
#
|
52
52
|
def method_missing( name, *args, &block )
|
53
53
|
@logger << "#@leader#{name}(#{args.inspect[1..-2]})\n"
|
data/lib/logging/version.rb
CHANGED
data/lib/logging.rb
CHANGED
@@ -258,6 +258,7 @@ module Logging
|
|
258
258
|
module_eval "MAX_LEVEL_LENGTH = #{longest.length}", __FILE__, __LINE__
|
259
259
|
|
260
260
|
self.cause_depth = nil unless defined? @cause_depth
|
261
|
+
self.raise_errors = false unless defined? @raise_errors
|
261
262
|
|
262
263
|
initialize_plugins
|
263
264
|
levels.keys
|
@@ -268,8 +269,8 @@ module Logging
|
|
268
269
|
#
|
269
270
|
# Defines the default _obj_format_ method to use when converting objects
|
270
271
|
# into string representations for logging. _obj_format_ can be one of
|
271
|
-
# <tt>:string</tt>, <tt>:inspect</tt>, or <tt>:yaml</tt>.
|
272
|
-
# formatting commands map to the following object methods
|
272
|
+
# <tt>:string</tt>, <tt>:inspect</tt>, <tt>:json</tt> or <tt>:yaml</tt>.
|
273
|
+
# These formatting commands map to the following object methods
|
273
274
|
#
|
274
275
|
# * :string => to_s
|
275
276
|
# * :inspect => inspect
|
@@ -277,7 +278,7 @@ module Logging
|
|
277
278
|
# * :json => MultiJson.encode(obj)
|
278
279
|
#
|
279
280
|
# An +ArgumentError+ is raised if anything other than +:string+,
|
280
|
-
# +:inspect+, +:yaml+ is passed to this method.
|
281
|
+
# +:inspect+, +:json+ or +:yaml+ is passed to this method.
|
281
282
|
#
|
282
283
|
def format_as( f )
|
283
284
|
f = f.intern if f.instance_of? String
|
@@ -490,6 +491,21 @@ module Logging
|
|
490
491
|
io
|
491
492
|
end
|
492
493
|
|
494
|
+
# Raise an exception when an error is encountered while logging, be it with
|
495
|
+
# a backing store, formatter, or anything else. You probably wouldn't want
|
496
|
+
# to enable this outside of test.
|
497
|
+
#
|
498
|
+
# Not that only one error will ever be raised per logging backend, as
|
499
|
+
# backends that raise errors on write will be set to :off.
|
500
|
+
def raise_errors=(boolean)
|
501
|
+
@raise_errors = boolean
|
502
|
+
end
|
503
|
+
|
504
|
+
# Whether or not we should raise errors when writing logs.
|
505
|
+
def raise_errors?
|
506
|
+
@raise_errors
|
507
|
+
end
|
508
|
+
|
493
509
|
# :stopdoc:
|
494
510
|
# Convert the given level into a canonical form - a lowercase string.
|
495
511
|
def levelify( level )
|
@@ -518,7 +534,7 @@ module Logging
|
|
518
534
|
# exception will be raised again.
|
519
535
|
def log_internal_error( err )
|
520
536
|
log_internal(-2) { err }
|
521
|
-
raise err if
|
537
|
+
raise err if ::Logging.raise_errors?
|
522
538
|
end
|
523
539
|
|
524
540
|
# Close all appenders
|
@@ -569,8 +585,7 @@ module Logging
|
|
569
585
|
require libpath('logging/diagnostic_context')
|
570
586
|
|
571
587
|
require libpath('logging/rails_compat')
|
572
|
-
end
|
573
|
-
|
588
|
+
end
|
574
589
|
|
575
590
|
# This finalizer will close all the appenders that exist in the system.
|
576
591
|
# This is needed for closing IO streams and connections to the syslog server
|
data/logging.gemspec
CHANGED
@@ -1,45 +1,44 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: logging 2.
|
2
|
+
# stub: logging 2.3.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "logging".freeze
|
6
|
-
s.version = "2.
|
6
|
+
s.version = "2.3.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Tim Pease".freeze]
|
11
|
-
s.date = "
|
11
|
+
s.date = "2020-07-04"
|
12
12
|
s.description = "**Logging** is a flexible logging library for use in Ruby programs based on the\ndesign of Java's log4j library. It features a hierarchical logging system,\ncustom level names, multiple output destinations per log event, custom\nformatting, and more.".freeze
|
13
13
|
s.email = "tim.pease@gmail.com".freeze
|
14
14
|
s.extra_rdoc_files = ["History.txt".freeze]
|
15
|
-
s.files = [".gitignore".freeze, ".travis.yml".freeze, "History.txt".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "examples/appenders.rb".freeze, "examples/classes.rb".freeze, "examples/colorization.rb".freeze, "examples/custom_log_levels.rb".freeze, "examples/fork.rb".freeze, "examples/formatting.rb".freeze, "examples/hierarchies.rb".freeze, "examples/layouts.rb".freeze, "examples/lazy.rb".freeze, "examples/loggers.rb".freeze, "examples/mdc.rb".freeze, "examples/names.rb".freeze, "examples/rails4.rb".freeze, "examples/reusing_layouts.rb".freeze, "examples/rspec_integration.rb".freeze, "examples/simple.rb".freeze, "lib/logging.rb".freeze, "lib/logging/appender.rb".freeze, "lib/logging/appenders.rb".freeze, "lib/logging/appenders/buffering.rb".freeze, "lib/logging/appenders/console.rb".freeze, "lib/logging/appenders/file.rb".freeze, "lib/logging/appenders/io.rb".freeze, "lib/logging/appenders/rolling_file.rb".freeze, "lib/logging/appenders/string_io.rb".freeze, "lib/logging/appenders/syslog.rb".freeze, "lib/logging/color_scheme.rb".freeze, "lib/logging/diagnostic_context.rb".freeze, "lib/logging/filter.rb".freeze, "lib/logging/filters.rb".freeze, "lib/logging/filters/level.rb".freeze, "lib/logging/layout.rb".freeze, "lib/logging/layouts.rb".freeze, "lib/logging/layouts/basic.rb".freeze, "lib/logging/layouts/parseable.rb".freeze, "lib/logging/layouts/pattern.rb".freeze, "lib/logging/log_event.rb".freeze, "lib/logging/logger.rb".freeze, "lib/logging/proxy.rb".freeze, "lib/logging/rails_compat.rb".freeze, "lib/logging/repository.rb".freeze, "lib/logging/root_logger.rb".freeze, "lib/logging/utils.rb".freeze, "lib/logging/version.rb".freeze, "lib/rspec/logging_helper.rb".freeze, "lib/spec/logging_helper.rb".freeze, "logging.gemspec".freeze, "script/bootstrap".freeze, "script/console".freeze, "test/appenders/test_async_flushing.rb".freeze, "test/appenders/test_buffered_io.rb".freeze, "test/appenders/test_console.rb".freeze, "test/appenders/test_file.rb".freeze, "test/appenders/test_io.rb".freeze, "test/appenders/test_rolling_file.rb".freeze, "test/appenders/test_string_io.rb".freeze, "test/appenders/test_syslog.rb".freeze, "test/benchmark.rb".freeze, "test/layouts/test_basic.rb".freeze, "test/layouts/test_color_pattern.rb".freeze, "test/layouts/test_json.rb".freeze, "test/layouts/test_pattern.rb".freeze, "test/layouts/test_yaml.rb".freeze, "test/performance.rb".freeze, "test/setup.rb".freeze, "test/test_appender.rb".freeze, "test/test_color_scheme.rb".freeze, "test/test_filter.rb".freeze, "test/test_layout.rb".freeze, "test/test_log_event.rb".freeze, "test/test_logger.rb".freeze, "test/test_logging.rb".freeze, "test/test_mapped_diagnostic_context.rb".freeze, "test/test_nested_diagnostic_context.rb".freeze, "test/test_proxy.rb".freeze, "test/test_repository.rb".freeze, "test/test_root_logger.rb".freeze, "test/test_utils.rb".freeze]
|
15
|
+
s.files = [".gitignore".freeze, ".travis.yml".freeze, "History.txt".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "examples/appenders.rb".freeze, "examples/classes.rb".freeze, "examples/colorization.rb".freeze, "examples/custom_log_levels.rb".freeze, "examples/fork.rb".freeze, "examples/formatting.rb".freeze, "examples/hierarchies.rb".freeze, "examples/layouts.rb".freeze, "examples/lazy.rb".freeze, "examples/loggers.rb".freeze, "examples/mdc.rb".freeze, "examples/names.rb".freeze, "examples/rails4.rb".freeze, "examples/reusing_layouts.rb".freeze, "examples/rspec_integration.rb".freeze, "examples/simple.rb".freeze, "lib/logging.rb".freeze, "lib/logging/appender.rb".freeze, "lib/logging/appenders.rb".freeze, "lib/logging/appenders/buffering.rb".freeze, "lib/logging/appenders/console.rb".freeze, "lib/logging/appenders/file.rb".freeze, "lib/logging/appenders/io.rb".freeze, "lib/logging/appenders/rolling_file.rb".freeze, "lib/logging/appenders/string_io.rb".freeze, "lib/logging/appenders/syslog.rb".freeze, "lib/logging/color_scheme.rb".freeze, "lib/logging/diagnostic_context.rb".freeze, "lib/logging/filter.rb".freeze, "lib/logging/filters.rb".freeze, "lib/logging/filters/level.rb".freeze, "lib/logging/layout.rb".freeze, "lib/logging/layouts.rb".freeze, "lib/logging/layouts/basic.rb".freeze, "lib/logging/layouts/parseable.rb".freeze, "lib/logging/layouts/pattern.rb".freeze, "lib/logging/log_event.rb".freeze, "lib/logging/logger.rb".freeze, "lib/logging/proxy.rb".freeze, "lib/logging/rails_compat.rb".freeze, "lib/logging/repository.rb".freeze, "lib/logging/root_logger.rb".freeze, "lib/logging/utils.rb".freeze, "lib/logging/version.rb".freeze, "lib/rspec/logging_helper.rb".freeze, "lib/spec/logging_helper.rb".freeze, "logging.gemspec".freeze, "script/bootstrap".freeze, "script/console".freeze, "test/appenders/test_async_flushing.rb".freeze, "test/appenders/test_buffered_io.rb".freeze, "test/appenders/test_console.rb".freeze, "test/appenders/test_file.rb".freeze, "test/appenders/test_io.rb".freeze, "test/appenders/test_rolling_file.rb".freeze, "test/appenders/test_string_io.rb".freeze, "test/appenders/test_syslog.rb".freeze, "test/benchmark.rb".freeze, "test/layouts/test_basic.rb".freeze, "test/layouts/test_color_pattern.rb".freeze, "test/layouts/test_json.rb".freeze, "test/layouts/test_nested_exceptions.rb".freeze, "test/layouts/test_pattern.rb".freeze, "test/layouts/test_yaml.rb".freeze, "test/performance.rb".freeze, "test/setup.rb".freeze, "test/test_appender.rb".freeze, "test/test_color_scheme.rb".freeze, "test/test_filter.rb".freeze, "test/test_layout.rb".freeze, "test/test_log_event.rb".freeze, "test/test_logger.rb".freeze, "test/test_logging.rb".freeze, "test/test_mapped_diagnostic_context.rb".freeze, "test/test_nested_diagnostic_context.rb".freeze, "test/test_proxy.rb".freeze, "test/test_repository.rb".freeze, "test/test_root_logger.rb".freeze, "test/test_utils.rb".freeze]
|
16
16
|
s.homepage = "http://rubygems.org/gems/logging".freeze
|
17
17
|
s.rdoc_options = ["--main".freeze, "README.md".freeze]
|
18
|
-
s.
|
19
|
-
s.rubygems_version = "2.5.2".freeze
|
18
|
+
s.rubygems_version = "3.0.1".freeze
|
20
19
|
s.summary = "A flexible and extendable logging library for Ruby".freeze
|
21
|
-
s.test_files = ["test/appenders/test_async_flushing.rb".freeze, "test/appenders/test_buffered_io.rb".freeze, "test/appenders/test_console.rb".freeze, "test/appenders/test_file.rb".freeze, "test/appenders/test_io.rb".freeze, "test/appenders/test_rolling_file.rb".freeze, "test/appenders/test_string_io.rb".freeze, "test/appenders/test_syslog.rb".freeze, "test/layouts/test_basic.rb".freeze, "test/layouts/test_color_pattern.rb".freeze, "test/layouts/test_json.rb".freeze, "test/layouts/test_pattern.rb".freeze, "test/layouts/test_yaml.rb".freeze, "test/test_appender.rb".freeze, "test/test_color_scheme.rb".freeze, "test/test_filter.rb".freeze, "test/test_layout.rb".freeze, "test/test_log_event.rb".freeze, "test/test_logger.rb".freeze, "test/test_logging.rb".freeze, "test/test_mapped_diagnostic_context.rb".freeze, "test/test_nested_diagnostic_context.rb".freeze, "test/test_proxy.rb".freeze, "test/test_repository.rb".freeze, "test/test_root_logger.rb".freeze, "test/test_utils.rb".freeze]
|
20
|
+
s.test_files = ["test/appenders/test_async_flushing.rb".freeze, "test/appenders/test_buffered_io.rb".freeze, "test/appenders/test_console.rb".freeze, "test/appenders/test_file.rb".freeze, "test/appenders/test_io.rb".freeze, "test/appenders/test_rolling_file.rb".freeze, "test/appenders/test_string_io.rb".freeze, "test/appenders/test_syslog.rb".freeze, "test/layouts/test_basic.rb".freeze, "test/layouts/test_color_pattern.rb".freeze, "test/layouts/test_json.rb".freeze, "test/layouts/test_nested_exceptions.rb".freeze, "test/layouts/test_pattern.rb".freeze, "test/layouts/test_yaml.rb".freeze, "test/test_appender.rb".freeze, "test/test_color_scheme.rb".freeze, "test/test_filter.rb".freeze, "test/test_layout.rb".freeze, "test/test_log_event.rb".freeze, "test/test_logger.rb".freeze, "test/test_logging.rb".freeze, "test/test_mapped_diagnostic_context.rb".freeze, "test/test_nested_diagnostic_context.rb".freeze, "test/test_proxy.rb".freeze, "test/test_repository.rb".freeze, "test/test_root_logger.rb".freeze, "test/test_utils.rb".freeze]
|
22
21
|
|
23
22
|
if s.respond_to? :specification_version then
|
24
23
|
s.specification_version = 4
|
25
24
|
|
26
25
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
26
|
s.add_runtime_dependency(%q<little-plugger>.freeze, ["~> 1.1"])
|
28
|
-
s.add_runtime_dependency(%q<multi_json>.freeze, ["~> 1.
|
29
|
-
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.
|
27
|
+
s.add_runtime_dependency(%q<multi_json>.freeze, ["~> 1.14"])
|
28
|
+
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.3"])
|
30
29
|
s.add_development_dependency(%q<bones-git>.freeze, ["~> 1.3"])
|
31
30
|
s.add_development_dependency(%q<bones>.freeze, [">= 3.8.4"])
|
32
31
|
else
|
33
32
|
s.add_dependency(%q<little-plugger>.freeze, ["~> 1.1"])
|
34
|
-
s.add_dependency(%q<multi_json>.freeze, ["~> 1.
|
35
|
-
s.add_dependency(%q<test-unit>.freeze, ["~> 3.
|
33
|
+
s.add_dependency(%q<multi_json>.freeze, ["~> 1.14"])
|
34
|
+
s.add_dependency(%q<test-unit>.freeze, ["~> 3.3"])
|
36
35
|
s.add_dependency(%q<bones-git>.freeze, ["~> 1.3"])
|
37
36
|
s.add_dependency(%q<bones>.freeze, [">= 3.8.4"])
|
38
37
|
end
|
39
38
|
else
|
40
39
|
s.add_dependency(%q<little-plugger>.freeze, ["~> 1.1"])
|
41
|
-
s.add_dependency(%q<multi_json>.freeze, ["~> 1.
|
42
|
-
s.add_dependency(%q<test-unit>.freeze, ["~> 3.
|
40
|
+
s.add_dependency(%q<multi_json>.freeze, ["~> 1.14"])
|
41
|
+
s.add_dependency(%q<test-unit>.freeze, ["~> 3.3"])
|
43
42
|
s.add_dependency(%q<bones-git>.freeze, ["~> 1.3"])
|
44
43
|
s.add_dependency(%q<bones>.freeze, [">= 3.8.4"])
|
45
44
|
end
|
@@ -194,24 +194,22 @@ module TestAppenders
|
|
194
194
|
assert_nil(readline)
|
195
195
|
end
|
196
196
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
assert_nil(readline)
|
214
|
-
end
|
197
|
+
def test_force_encoding
|
198
|
+
a = 'ümlaut'
|
199
|
+
b = 'hello ümlaut'.force_encoding('BINARY')
|
200
|
+
|
201
|
+
event_a = Logging::LogEvent.new('TestLogger', @levels['info'], a, false)
|
202
|
+
event_b = Logging::LogEvent.new('TestLogger', @levels['info'], b, false)
|
203
|
+
|
204
|
+
@appender.append event_a
|
205
|
+
@appender.append event_b
|
206
|
+
assert_nil(readline)
|
207
|
+
|
208
|
+
@appender.append event_a
|
209
|
+
assert_equal " INFO TestLogger : #{a}\n", readline
|
210
|
+
assert_equal " INFO TestLogger : #{b.force_encoding('UTF-8')}\n", readline
|
211
|
+
assert_equal " INFO TestLogger : #{a}\n", readline
|
212
|
+
assert_nil(readline)
|
215
213
|
end
|
216
214
|
|
217
215
|
private
|
@@ -20,11 +20,10 @@ module TestAppenders
|
|
20
20
|
|
21
21
|
appender = Logging.appenders.stdout
|
22
22
|
assert_equal 'stdout', appender.name
|
23
|
-
assert_same STDOUT, appender.instance_variable_get(:@io)
|
24
23
|
|
25
|
-
appender.
|
26
|
-
|
27
|
-
assert_equal
|
24
|
+
io = appender.instance_variable_get(:@io)
|
25
|
+
assert_same STDOUT, io
|
26
|
+
assert_equal STDOUT.fileno, io.fileno
|
28
27
|
|
29
28
|
appender = Logging.appenders.stdout('foo')
|
30
29
|
assert_equal 'foo', appender.name
|
@@ -38,7 +37,26 @@ module TestAppenders
|
|
38
37
|
assert_equal 3, appender.level
|
39
38
|
end
|
40
39
|
|
41
|
-
|
40
|
+
def test_reopen
|
41
|
+
Logging::Repository.instance
|
42
|
+
|
43
|
+
appender = Logging.appenders.stdout
|
44
|
+
io = appender.instance_variable_get(:@io)
|
45
|
+
|
46
|
+
appender.close
|
47
|
+
assert appender.closed?
|
48
|
+
refute io.closed?
|
49
|
+
refute STDOUT.closed?
|
50
|
+
|
51
|
+
appender.reopen
|
52
|
+
refute appender.closed?
|
53
|
+
|
54
|
+
new_io = appender.instance_variable_get(:@io)
|
55
|
+
assert_same io, new_io
|
56
|
+
refute new_io.closed?
|
57
|
+
refute io.closed?
|
58
|
+
end
|
59
|
+
end
|
42
60
|
|
43
61
|
class TestStderr < Test::Unit::TestCase
|
44
62
|
include LoggingTestCase
|
@@ -48,11 +66,10 @@ module TestAppenders
|
|
48
66
|
|
49
67
|
appender = Logging.appenders.stderr
|
50
68
|
assert_equal 'stderr', appender.name
|
51
|
-
assert_same STDERR, appender.instance_variable_get(:@io)
|
52
69
|
|
53
|
-
appender.
|
54
|
-
|
55
|
-
assert_equal
|
70
|
+
io = appender.instance_variable_get(:@io)
|
71
|
+
assert_same STDERR, io
|
72
|
+
assert_equal STDERR.fileno, io.fileno
|
56
73
|
|
57
74
|
appender = Logging.appenders.stderr('foo')
|
58
75
|
assert_equal 'foo', appender.name
|
@@ -66,8 +83,26 @@ module TestAppenders
|
|
66
83
|
assert_equal 3, appender.level
|
67
84
|
end
|
68
85
|
|
69
|
-
|
86
|
+
def test_reopen
|
87
|
+
Logging::Repository.instance
|
70
88
|
|
71
|
-
|
72
|
-
|
89
|
+
appender = Logging.appenders.stderr
|
90
|
+
io = appender.instance_variable_get(:@io)
|
91
|
+
|
92
|
+
appender.close
|
93
|
+
assert appender.closed?
|
94
|
+
refute io.closed?
|
95
|
+
refute STDERR.closed?
|
96
|
+
|
97
|
+
appender.reopen
|
98
|
+
refute appender.closed?
|
99
|
+
|
100
|
+
new_io = appender.instance_variable_get(:@io)
|
101
|
+
assert_same io, new_io
|
102
|
+
refute new_io.closed?
|
103
|
+
refute io.closed?
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
73
108
|
|
data/test/appenders/test_file.rb
CHANGED
@@ -14,10 +14,10 @@ module TestAppenders
|
|
14
14
|
super
|
15
15
|
Logging.init
|
16
16
|
|
17
|
-
FileUtils.mkdir [File.join(
|
18
|
-
FileUtils.chmod 0555, File.join(
|
19
|
-
FileUtils.touch File.join(
|
20
|
-
FileUtils.chmod 0444, File.join(
|
17
|
+
FileUtils.mkdir [File.join(@tmpdir, 'dir'), File.join(@tmpdir, 'uw_dir')]
|
18
|
+
FileUtils.chmod 0555, File.join(@tmpdir, 'uw_dir')
|
19
|
+
FileUtils.touch File.join(@tmpdir, 'uw_file')
|
20
|
+
FileUtils.chmod 0444, File.join(@tmpdir, 'uw_file')
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_factory_method_validates_input
|
@@ -27,27 +27,27 @@ module TestAppenders
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_class_assert_valid_logfile
|
30
|
-
log = File.join(
|
30
|
+
log = File.join(@tmpdir, 'uw_dir', 'file.log')
|
31
31
|
assert_raise(ArgumentError) do
|
32
32
|
Logging.appenders.file(log).class.assert_valid_logfile(log)
|
33
33
|
end
|
34
34
|
|
35
|
-
log = File.join(
|
35
|
+
log = File.join(@tmpdir, 'dir')
|
36
36
|
assert_raise(ArgumentError) do
|
37
37
|
Logging.appenders.file(log).class.assert_valid_logfile(log)
|
38
38
|
end
|
39
39
|
|
40
|
-
log = File.join(
|
40
|
+
log = File.join(@tmpdir, 'uw_file')
|
41
41
|
assert_raise(ArgumentError) do
|
42
42
|
Logging.appenders.file(log).class.assert_valid_logfile(log)
|
43
43
|
end
|
44
44
|
|
45
|
-
log = File.join(
|
45
|
+
log = File.join(@tmpdir, 'file.log')
|
46
46
|
assert Logging.appenders.file(log).class.assert_valid_logfile(log)
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_initialize
|
50
|
-
log = File.join(
|
50
|
+
log = File.join(@tmpdir, 'file.log')
|
51
51
|
appender = Logging.appenders.file(NAME, :filename => log)
|
52
52
|
assert_equal 'logfile', appender.name
|
53
53
|
assert_equal ::File.expand_path(log), appender.filename
|
@@ -87,7 +87,7 @@ module TestAppenders
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def test_changing_directories
|
90
|
-
log = File.join(
|
90
|
+
log = File.join(@tmpdir, 'file.log')
|
91
91
|
appender = Logging.appenders.file(NAME, :filename => log)
|
92
92
|
|
93
93
|
assert_equal 'logfile', appender.name
|
@@ -95,29 +95,45 @@ module TestAppenders
|
|
95
95
|
|
96
96
|
begin
|
97
97
|
pwd = Dir.pwd
|
98
|
-
Dir.chdir
|
98
|
+
Dir.chdir @tmpdir
|
99
99
|
assert_nothing_raised { appender.reopen }
|
100
100
|
ensure
|
101
101
|
Dir.chdir pwd
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
|
105
|
+
def test_encoding
|
106
|
+
log = File.join(@tmpdir, 'file-encoding.log')
|
107
|
+
appender = Logging.appenders.file(NAME, :filename => log, :encoding => 'ASCII')
|
106
108
|
|
107
|
-
|
108
|
-
|
109
|
-
|
109
|
+
appender << "A normal line of text\n"
|
110
|
+
appender << "ümlaut\n"
|
111
|
+
appender.close
|
110
112
|
|
111
|
-
|
112
|
-
|
113
|
-
|
113
|
+
lines = File.readlines(log, :encoding => 'UTF-8')
|
114
|
+
assert_equal "A normal line of text\n", lines[0]
|
115
|
+
assert_equal "ümlaut\n", lines[1]
|
114
116
|
|
115
|
-
|
116
|
-
|
117
|
-
|
117
|
+
cleanup
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_reopening_should_not_truncate_the_file
|
121
|
+
log = File.join(@tmpdir, 'truncate.log')
|
122
|
+
appender = Logging.appenders.file(NAME, filename: log, truncate: true)
|
123
|
+
|
124
|
+
appender << "This will be the first line\n"
|
125
|
+
appender << "This will be the second line\n"
|
126
|
+
appender << "This will be the third line\n"
|
127
|
+
appender.reopen
|
118
128
|
|
119
|
-
|
129
|
+
File.open(log, 'r') do |file|
|
130
|
+
assert_equal "This will be the first line\n", file.readline
|
131
|
+
assert_equal "This will be the second line\n", file.readline
|
132
|
+
assert_equal "This will be the third line\n", file.readline
|
133
|
+
assert_raise(EOFError) {file.readline}
|
120
134
|
end
|
135
|
+
|
136
|
+
cleanup
|
121
137
|
end
|
122
138
|
|
123
139
|
private
|
@@ -127,7 +143,6 @@ module TestAppenders
|
|
127
143
|
Logging.appenders[NAME] = nil
|
128
144
|
end
|
129
145
|
end
|
130
|
-
|
131
146
|
end # TestFile
|
132
147
|
|
133
148
|
end # TestAppenders
|
@@ -13,9 +13,9 @@ module TestAppenders
|
|
13
13
|
super
|
14
14
|
Logging.init
|
15
15
|
|
16
|
-
@fn = File.expand_path('test.log',
|
17
|
-
@fn_fmt = File.expand_path('test.%d.log',
|
18
|
-
@glob = File.expand_path('*.log',
|
16
|
+
@fn = File.expand_path('test.log', @tmpdir)
|
17
|
+
@fn_fmt = File.expand_path('test.%d.log', @tmpdir)
|
18
|
+
@glob = File.expand_path('*.log', @tmpdir)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_factory_method_validates_input
|
@@ -93,8 +93,8 @@ module TestAppenders
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_age
|
96
|
-
d_glob = File.join(
|
97
|
-
dt_glob = File.join(
|
96
|
+
d_glob = File.join(@tmpdir, 'test.*.log')
|
97
|
+
dt_glob = File.join(@tmpdir, 'test.*-*.log')
|
98
98
|
age_fn = @fn + '.age'
|
99
99
|
|
100
100
|
assert_equal [], Dir.glob(@glob)
|
@@ -205,7 +205,7 @@ module TestAppenders
|
|
205
205
|
|
206
206
|
begin
|
207
207
|
pwd = Dir.pwd
|
208
|
-
Dir.chdir
|
208
|
+
Dir.chdir @tmpdir
|
209
209
|
|
210
210
|
ap << 'X' * 100; ap.flush
|
211
211
|
assert_equal 1, Dir.glob(@glob).length
|
@@ -249,9 +249,9 @@ module TestAppenders
|
|
249
249
|
end
|
250
250
|
|
251
251
|
def test_custom_numberd_filename
|
252
|
-
fn = File.expand_path('test.log{{.%d}}',
|
253
|
-
filename = File.expand_path('test.log',
|
254
|
-
glob = File.expand_path('test.log.*',
|
252
|
+
fn = File.expand_path('test.log{{.%d}}', @tmpdir)
|
253
|
+
filename = File.expand_path('test.log', @tmpdir)
|
254
|
+
glob = File.expand_path('test.log.*', @tmpdir)
|
255
255
|
|
256
256
|
assert_equal [], Dir.glob(glob)
|
257
257
|
ap = Logging.appenders.rolling_file(NAME, :filename => fn, :size => 100, :keep => 2)
|
@@ -285,10 +285,10 @@ module TestAppenders
|
|
285
285
|
end
|
286
286
|
|
287
287
|
def test_custom_timestamp_filename
|
288
|
-
fn = File.expand_path('test{{.%S:%M}}.log',
|
289
|
-
filename = File.expand_path('test.log',
|
288
|
+
fn = File.expand_path('test{{.%S:%M}}.log', @tmpdir)
|
289
|
+
filename = File.expand_path('test.log', @tmpdir)
|
290
290
|
age_file = filename + '.age'
|
291
|
-
glob = File.expand_path('test.*.log',
|
291
|
+
glob = File.expand_path('test.*.log', @tmpdir)
|
292
292
|
|
293
293
|
assert_equal [], Dir.glob(glob)
|
294
294
|
ap = Logging.appenders.rolling_file(NAME, :filename => fn, :age => 1, :keep => 2)
|
data/test/layouts/test_json.rb
CHANGED
@@ -78,7 +78,7 @@ module TestLayouts
|
|
78
78
|
'log message', false)
|
79
79
|
event.file = 'test_file.rb'
|
80
80
|
event.line = 123
|
81
|
-
event.
|
81
|
+
event.method_name = 'method_name'
|
82
82
|
|
83
83
|
@layout.items = %w[logger]
|
84
84
|
assert_equal %Q[{"logger":"TestLogger"}\n], @layout.format(event)
|
@@ -19,7 +19,7 @@ module TestLogging
|
|
19
19
|
end
|
20
20
|
|
21
21
|
layout = Logging.layouts.basic({})
|
22
|
-
log = layout.format_obj(
|
22
|
+
log = layout.format_obj(err)
|
23
23
|
assert_not_nil log.index('<StandardError> root exception')
|
24
24
|
|
25
25
|
if err.respond_to?(:cause)
|
@@ -45,7 +45,7 @@ module TestLogging
|
|
45
45
|
end
|
46
46
|
|
47
47
|
layout = Logging.layouts.basic(cause_depth: 1)
|
48
|
-
log = layout.format_obj(
|
48
|
+
log = layout.format_obj(err)
|
49
49
|
assert_not_nil log.index('<StandardError> root exception')
|
50
50
|
|
51
51
|
if err.respond_to?(:cause)
|
@@ -68,12 +68,12 @@ module TestLogging
|
|
68
68
|
end
|
69
69
|
|
70
70
|
layout = Logging.layouts.parseable.new
|
71
|
-
log = layout.format_obj(
|
71
|
+
log = layout.format_obj(err)
|
72
72
|
assert_equal 'StandardError', log[:class]
|
73
73
|
assert_equal 'root exception', log[:message]
|
74
74
|
assert log[:backtrace].size > 0
|
75
75
|
|
76
|
-
if
|
76
|
+
if err.respond_to?(:cause)
|
77
77
|
assert_not_nil log[:cause]
|
78
78
|
|
79
79
|
log = log[:cause]
|
@@ -101,13 +101,13 @@ module TestLogging
|
|
101
101
|
end
|
102
102
|
|
103
103
|
layout = Logging.layouts.parseable.new(cause_depth: 1)
|
104
|
-
log = layout.format_obj(
|
104
|
+
log = layout.format_obj(err)
|
105
105
|
|
106
106
|
assert_equal 'StandardError', log[:class]
|
107
107
|
assert_equal 'root exception', log[:message]
|
108
108
|
assert log[:backtrace].size > 0
|
109
109
|
|
110
|
-
if
|
110
|
+
if err.respond_to?(:cause)
|
111
111
|
assert_not_nil log[:cause]
|
112
112
|
|
113
113
|
log = log[:cause]
|