logger 1.5.3 → 1.6.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 +4 -4
- data/lib/logger/log_device.rb +8 -1
- data/lib/logger/period.rb +8 -8
- data/lib/logger/severity.rb +19 -0
- data/lib/logger/version.rb +1 -1
- data/lib/logger.rb +34 -22
- data/logger.gemspec +1 -5
- metadata +5 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6fa7c02974cf7c275bfa19e6225f8b06bdbc76d49f78e6bf75e351dfb14c1e3
|
4
|
+
data.tar.gz: d299b1c26a5389316c89a7899359f5d8d1570dae24428bce6c43d9832adc7dc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b19a5196c89b0c184c5c2ab4a77d5085d26ec6f04c272b7bbd0085beaeaf7d758e9cb0c728c486e07f4498209e70327420ff66f218b4f6baec7d59fe7ec0c44
|
7
|
+
data.tar.gz: 1fc54467c631ea277b044c9d2b48895f3d2ed684eec2725f3aa1e475c551e1cfb6420fe9540a5eddf0e597794f74ee8c669c506faad44af5ddb8075cb7c8826e
|
data/lib/logger/log_device.rb
CHANGED
@@ -11,9 +11,10 @@ class Logger
|
|
11
11
|
attr_reader :filename
|
12
12
|
include MonitorMixin
|
13
13
|
|
14
|
-
def initialize(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix: nil, binmode: false)
|
14
|
+
def initialize(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix: nil, binmode: false, reraise_write_errors: [])
|
15
15
|
@dev = @filename = @shift_age = @shift_size = @shift_period_suffix = nil
|
16
16
|
@binmode = binmode
|
17
|
+
@reraise_write_errors = reraise_write_errors
|
17
18
|
mon_initialize
|
18
19
|
set_dev(log)
|
19
20
|
if @filename
|
@@ -34,16 +35,22 @@ class Logger
|
|
34
35
|
if @shift_age and @dev.respond_to?(:stat)
|
35
36
|
begin
|
36
37
|
check_shift_log
|
38
|
+
rescue *@reraise_write_errors
|
39
|
+
raise
|
37
40
|
rescue
|
38
41
|
warn("log shifting failed. #{$!}")
|
39
42
|
end
|
40
43
|
end
|
41
44
|
begin
|
42
45
|
@dev.write(message)
|
46
|
+
rescue *@reraise_write_errors
|
47
|
+
raise
|
43
48
|
rescue
|
44
49
|
warn("log writing failed. #{$!}")
|
45
50
|
end
|
46
51
|
end
|
52
|
+
rescue *@reraise_write_errors
|
53
|
+
raise
|
47
54
|
rescue Exception => ignored
|
48
55
|
warn("log writing failed. #{ignored}")
|
49
56
|
end
|
data/lib/logger/period.rb
CHANGED
@@ -8,14 +8,14 @@ class Logger
|
|
8
8
|
|
9
9
|
def next_rotate_time(now, shift_age)
|
10
10
|
case shift_age
|
11
|
-
when 'daily'
|
11
|
+
when 'daily', :daily
|
12
12
|
t = Time.mktime(now.year, now.month, now.mday) + SiD
|
13
|
-
when 'weekly'
|
13
|
+
when 'weekly', :weekly
|
14
14
|
t = Time.mktime(now.year, now.month, now.mday) + SiD * (7 - now.wday)
|
15
|
-
when 'monthly'
|
15
|
+
when 'monthly', :monthly
|
16
16
|
t = Time.mktime(now.year, now.month, 1) + SiD * 32
|
17
17
|
return Time.mktime(t.year, t.month, 1)
|
18
|
-
when 'now', 'everytime'
|
18
|
+
when 'now', 'everytime', :now, :everytime
|
19
19
|
return now
|
20
20
|
else
|
21
21
|
raise ArgumentError, "invalid :shift_age #{shift_age.inspect}, should be daily, weekly, monthly, or everytime"
|
@@ -30,13 +30,13 @@ class Logger
|
|
30
30
|
|
31
31
|
def previous_period_end(now, shift_age)
|
32
32
|
case shift_age
|
33
|
-
when 'daily'
|
33
|
+
when 'daily', :daily
|
34
34
|
t = Time.mktime(now.year, now.month, now.mday) - SiD / 2
|
35
|
-
when 'weekly'
|
35
|
+
when 'weekly', :weekly
|
36
36
|
t = Time.mktime(now.year, now.month, now.mday) - (SiD * now.wday + SiD / 2)
|
37
|
-
when 'monthly'
|
37
|
+
when 'monthly', :monthly
|
38
38
|
t = Time.mktime(now.year, now.month, 1) - SiD / 2
|
39
|
-
when 'now', 'everytime'
|
39
|
+
when 'now', 'everytime', :now, :everytime
|
40
40
|
return now
|
41
41
|
else
|
42
42
|
raise ArgumentError, "invalid :shift_age #{shift_age.inspect}, should be daily, weekly, monthly, or everytime"
|
data/lib/logger/severity.rb
CHANGED
@@ -15,5 +15,24 @@ class Logger
|
|
15
15
|
FATAL = 4
|
16
16
|
# An unknown message that should always be logged.
|
17
17
|
UNKNOWN = 5
|
18
|
+
|
19
|
+
LEVELS = {
|
20
|
+
"debug" => DEBUG,
|
21
|
+
"info" => INFO,
|
22
|
+
"warn" => WARN,
|
23
|
+
"error" => ERROR,
|
24
|
+
"fatal" => FATAL,
|
25
|
+
"unknown" => UNKNOWN,
|
26
|
+
}
|
27
|
+
private_constant :LEVELS
|
28
|
+
|
29
|
+
def self.coerce(severity)
|
30
|
+
if severity.is_a?(Integer)
|
31
|
+
severity
|
32
|
+
else
|
33
|
+
key = severity.to_s.downcase
|
34
|
+
LEVELS[key] || raise(ArgumentError, "invalid log level: #{severity}")
|
35
|
+
end
|
36
|
+
end
|
18
37
|
end
|
19
38
|
end
|
data/lib/logger/version.rb
CHANGED
data/lib/logger.rb
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# A simple system for logging messages. See Logger for more documentation.
|
12
12
|
|
13
|
+
require 'fiber'
|
13
14
|
require 'monitor'
|
14
15
|
require 'rbconfig'
|
15
16
|
|
@@ -264,8 +265,7 @@ require_relative 'logger/errors'
|
|
264
265
|
# logger.error! # => 3
|
265
266
|
# logger.fatal! # => 4
|
266
267
|
#
|
267
|
-
# You can retrieve the log level with method
|
268
|
-
# {level}[Logger.html#attribute-i-level]:
|
268
|
+
# You can retrieve the log level with method #level.
|
269
269
|
#
|
270
270
|
# logger.level = Logger::ERROR
|
271
271
|
# logger.level # => 3
|
@@ -380,7 +380,9 @@ class Logger
|
|
380
380
|
include Severity
|
381
381
|
|
382
382
|
# Logging severity threshold (e.g. <tt>Logger::INFO</tt>).
|
383
|
-
|
383
|
+
def level
|
384
|
+
level_override[Fiber.current] || @level
|
385
|
+
end
|
384
386
|
|
385
387
|
# Sets the log level; returns +severity+.
|
386
388
|
# See {Log Level}[rdoc-ref:Logger@Log+Level].
|
@@ -395,24 +397,23 @@ class Logger
|
|
395
397
|
# Logger#sev_threshold= is an alias for Logger#level=.
|
396
398
|
#
|
397
399
|
def level=(severity)
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
@level = UNKNOWN
|
400
|
+
@level = Severity.coerce(severity)
|
401
|
+
end
|
402
|
+
|
403
|
+
# Adjust the log level during the block execution for the current Fiber only
|
404
|
+
#
|
405
|
+
# logger.with_level(:debug) do
|
406
|
+
# logger.debug { "Hello" }
|
407
|
+
# end
|
408
|
+
def with_level(severity)
|
409
|
+
prev, level_override[Fiber.current] = level, Severity.coerce(severity)
|
410
|
+
begin
|
411
|
+
yield
|
412
|
+
ensure
|
413
|
+
if prev
|
414
|
+
level_override[Fiber.current] = prev
|
414
415
|
else
|
415
|
-
|
416
|
+
level_override.delete(Fiber.current)
|
416
417
|
end
|
417
418
|
end
|
418
419
|
end
|
@@ -573,21 +574,27 @@ class Logger
|
|
573
574
|
# - +shift_period_suffix+: sets the format for the filename suffix
|
574
575
|
# for periodic log file rotation; default is <tt>'%Y%m%d'</tt>.
|
575
576
|
# See {Periodic Rotation}[rdoc-ref:Logger@Periodic+Rotation].
|
577
|
+
# - +reraise_write_errors+: An array of exception classes, which will
|
578
|
+
# be reraised if there is an error when writing to the log device.
|
579
|
+
# The default is to swallow all exceptions raised.
|
576
580
|
#
|
577
581
|
def initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG,
|
578
582
|
progname: nil, formatter: nil, datetime_format: nil,
|
579
|
-
binmode: false, shift_period_suffix: '%Y%m%d'
|
583
|
+
binmode: false, shift_period_suffix: '%Y%m%d',
|
584
|
+
reraise_write_errors: [])
|
580
585
|
self.level = level
|
581
586
|
self.progname = progname
|
582
587
|
@default_formatter = Formatter.new
|
583
588
|
self.datetime_format = datetime_format
|
584
589
|
self.formatter = formatter
|
585
590
|
@logdev = nil
|
591
|
+
@level_override = {}
|
586
592
|
if logdev && logdev != File::NULL
|
587
593
|
@logdev = LogDevice.new(logdev, shift_age: shift_age,
|
588
594
|
shift_size: shift_size,
|
589
595
|
shift_period_suffix: shift_period_suffix,
|
590
|
-
binmode: binmode
|
596
|
+
binmode: binmode,
|
597
|
+
reraise_write_errors: reraise_write_errors)
|
591
598
|
end
|
592
599
|
end
|
593
600
|
|
@@ -739,6 +746,11 @@ private
|
|
739
746
|
SEV_LABEL[severity] || 'ANY'
|
740
747
|
end
|
741
748
|
|
749
|
+
# Guarantee the existence of this ivar even when subclasses don't call the superclass constructor.
|
750
|
+
def level_override
|
751
|
+
@level_override ||= {}
|
752
|
+
end
|
753
|
+
|
742
754
|
def format_message(severity, datetime, progname, msg)
|
743
755
|
(@formatter || @default_formatter).call(severity, datetime, progname, msg)
|
744
756
|
end
|
data/logger.gemspec
CHANGED
@@ -18,9 +18,5 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.files = Dir.glob("lib/**/*.rb") + ["logger.gemspec"]
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version = ">= 2.
|
22
|
-
|
23
|
-
spec.add_development_dependency "bundler", ">= 0"
|
24
|
-
spec.add_development_dependency "rake", ">= 12.3.3"
|
25
|
-
spec.add_development_dependency "test-unit"
|
21
|
+
spec.required_ruby_version = ">= 2.5.0"
|
26
22
|
end
|
metadata
CHANGED
@@ -1,58 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
8
8
|
- SHIBATA Hiroshi
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: bundler
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
21
|
-
type: :development
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: rake
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 12.3.3
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 12.3.3
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: test-unit
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
11
|
+
date: 2024-09-02 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
56
13
|
description: Provides a simple logging utility for outputting messages.
|
57
14
|
email:
|
58
15
|
- sonots@gmail.com
|
@@ -74,7 +31,6 @@ licenses:
|
|
74
31
|
- Ruby
|
75
32
|
- BSD-2-Clause
|
76
33
|
metadata: {}
|
77
|
-
post_install_message:
|
78
34
|
rdoc_options: []
|
79
35
|
require_paths:
|
80
36
|
- lib
|
@@ -82,15 +38,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
38
|
requirements:
|
83
39
|
- - ">="
|
84
40
|
- !ruby/object:Gem::Version
|
85
|
-
version: 2.
|
41
|
+
version: 2.5.0
|
86
42
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
43
|
requirements:
|
88
44
|
- - ">="
|
89
45
|
- !ruby/object:Gem::Version
|
90
46
|
version: '0'
|
91
47
|
requirements: []
|
92
|
-
rubygems_version: 3.
|
93
|
-
signing_key:
|
48
|
+
rubygems_version: 3.6.0.dev
|
94
49
|
specification_version: 4
|
95
50
|
summary: Provides a simple logging utility for outputting messages.
|
96
51
|
test_files: []
|