strftime_logger 0.0.1 → 0.0.2
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/.travis.yml +6 -0
- data/CHANGELOG.md +7 -0
- data/README.md +15 -4
- data/Rakefile +1 -1
- data/lib/strftime_logger.rb +16 -1
- data/lib/strftime_logger/formatter.rb +5 -1
- data/lib/strftime_logger/ltsv_formatter.rb +2 -1
- data/spec/formatter_spec.rb +15 -2
- data/spec/ltsv_formatter_spec.rb +3 -2
- data/spec/strftime_logger_spec.rb +9 -1
- data/strftime_logger.gemspec +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ccf12099be5e2b587c5afc7748143358284427b
|
4
|
+
data.tar.gz: 1e8e3a223b1cf6e18fa7257dec026577dc84f6b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b433ff7022ecb60477351c6ecbbe371c08aa1fbe7c0fd8f2e753bb69b1608940b6d33698583e1ed863d86b8469c02bfc894dcea1d412dc2afa78bd606ecb7917
|
7
|
+
data.tar.gz: 7b91de115753c90f49af546a072cf76ebd656e1ae9d32ab7654fe062a7c03e527658ab74910349113d03614ea271e034df36070c1167a6aa214d4e6c8fc2e92f
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -4,8 +4,8 @@ A logger treats log rotation in strftime fashion.
|
|
4
4
|
|
5
5
|
## What is this for?
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
The ruby's built-in logger does log rotation in the basis of log size.
|
8
|
+
In contrast, `StrftimeLogger` provides a feature to rotate logs in the basis of time.
|
9
9
|
|
10
10
|
This logger allows to specify the log path with `strftime` format such as:
|
11
11
|
|
@@ -15,8 +15,9 @@ logger = StrftimeLogger.new('/var/log/application.log.%Y%m%d')
|
|
15
15
|
|
16
16
|
which enables to rotate logs in each specific time.
|
17
17
|
|
18
|
-
In
|
19
|
-
|
18
|
+
In fact, this logger does not rotate logs, but outputs to the strftime formatted path directly.
|
19
|
+
|
20
|
+
This characteristic gives a side effect that it does not require to lock files in log rotation.
|
20
21
|
|
21
22
|
## Installation
|
22
23
|
|
@@ -53,6 +54,12 @@ are replaced with `\\n` so that the log message will be in one line.
|
|
53
54
|
logger.level = StrftimeLogger::WARN
|
54
55
|
```
|
55
56
|
|
57
|
+
Or, short-hand:
|
58
|
+
|
59
|
+
```
|
60
|
+
logger.log_level = 'WARN'
|
61
|
+
```
|
62
|
+
|
56
63
|
### Change the Formatter
|
57
64
|
|
58
65
|
It is possible to change the logger formmater as:
|
@@ -84,6 +91,10 @@ class SampleFormatter
|
|
84
91
|
end
|
85
92
|
```
|
86
93
|
|
94
|
+
## ToDo
|
95
|
+
|
96
|
+
* Support datetime_format
|
97
|
+
|
87
98
|
## ChangeLog
|
88
99
|
|
89
100
|
See [CHANGELOG.md](CHANGELOG.md) for details.
|
data/Rakefile
CHANGED
data/lib/strftime_logger.rb
CHANGED
@@ -82,6 +82,21 @@ class StrftimeLogger
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
def level=(level)
|
86
|
+
raise ArgumentError, 'An argument for #level= must be an Integer such as 0, 2. You may use Pfsys::Logger::DEBUG, Pfsys::Logger::WARN' unless level.is_a?(Integer)
|
87
|
+
@level = level
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.str_to_level(str)
|
91
|
+
level = SEV_LABEL.index(str.to_s.downcase.to_sym)
|
92
|
+
raise ArgumentError, 'An argument for #log_level= must be a String or Symbol such as DEBUG, :warn' unless level
|
93
|
+
level
|
94
|
+
end
|
95
|
+
|
96
|
+
def log_level=(log_level)
|
97
|
+
@level = self.class.str_to_level(log_level)
|
98
|
+
end
|
99
|
+
|
85
100
|
# @param severity [Int] log severity
|
86
101
|
def add(severity, message = nil, &block)
|
87
102
|
severity ||= UNKNOWN
|
@@ -126,7 +141,7 @@ class StrftimeLogger
|
|
126
141
|
|
127
142
|
def write(msg)
|
128
143
|
msg.chomp! if msg.respond_to?(:chomp!)
|
129
|
-
|
144
|
+
@bridge[:info].write(format_message(nil, msg))
|
130
145
|
end
|
131
146
|
|
132
147
|
# Returns +true+ iff the current severity level allows for the printing of
|
@@ -16,7 +16,11 @@ class StrftimeLogger
|
|
16
16
|
message = ""
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
19
|
+
if severity.nil?
|
20
|
+
format_message(message) + "\n"
|
21
|
+
else
|
22
|
+
FORMAT % [format_datetime(Time.now), format_severity(severity), format_message(message)]
|
23
|
+
end
|
20
24
|
end
|
21
25
|
|
22
26
|
private
|
data/spec/formatter_spec.rb
CHANGED
@@ -18,6 +18,19 @@ describe StrftimeLogger do
|
|
18
18
|
Timecop.return
|
19
19
|
end
|
20
20
|
|
21
|
+
it :info do
|
22
|
+
subject.info("test")
|
23
|
+
begin
|
24
|
+
raise ArgumentError.new('test')
|
25
|
+
rescue => e
|
26
|
+
subject.info(e)
|
27
|
+
end
|
28
|
+
File.open("#{log_dir}/application.log.#{today}") do |f|
|
29
|
+
expect(f.gets).to eq "#{now} [INFO] test\n"
|
30
|
+
expect(f.gets).to match(/#{Regexp.escape(now)} \[INFO\] ArgumentError test/)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
21
34
|
it :write do
|
22
35
|
subject.write("test")
|
23
36
|
begin
|
@@ -26,8 +39,8 @@ describe StrftimeLogger do
|
|
26
39
|
subject.write(e)
|
27
40
|
end
|
28
41
|
File.open("#{log_dir}/application.log.#{today}") do |f|
|
29
|
-
expect(f.gets).to eq "
|
30
|
-
expect(f.gets).to match(
|
42
|
+
expect(f.gets).to eq "test\n"
|
43
|
+
expect(f.gets).to match(/ArgumentError test/)
|
31
44
|
end
|
32
45
|
end
|
33
46
|
end
|
data/spec/ltsv_formatter_spec.rb
CHANGED
@@ -10,6 +10,7 @@ describe StrftimeLogger do
|
|
10
10
|
end
|
11
11
|
let(:log_dir) { "#{File.dirname(__FILE__)}/log" }
|
12
12
|
let(:today) { Time.now.strftime "%Y%m%d"}
|
13
|
+
let(:now) { Time.now.iso8601 }
|
13
14
|
|
14
15
|
before do
|
15
16
|
Dir.mkdir(log_dir)
|
@@ -25,8 +26,8 @@ describe StrftimeLogger do
|
|
25
26
|
subject.write("test")
|
26
27
|
subject.write({a:1, b:2})
|
27
28
|
File.open("#{log_dir}/application.log.#{today}") do |f|
|
28
|
-
expect(f.gets).to eq "
|
29
|
-
expect(f.gets).to eq "
|
29
|
+
expect(f.gets).to eq "time:#{now}\tmessage:test\n"
|
30
|
+
expect(f.gets).to eq "time:#{now}\ta:1\tb:2\n"
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
@@ -23,7 +23,7 @@ describe StrftimeLogger do
|
|
23
23
|
it :write do
|
24
24
|
subject.write("test")
|
25
25
|
subject.write("test")
|
26
|
-
expect(File.read("#{log_dir}/application.log.#{today}")).to eq "
|
26
|
+
expect(File.read("#{log_dir}/application.log.#{today}")).to eq "test\n"*2
|
27
27
|
end
|
28
28
|
|
29
29
|
LEVEL_TEXT = %w(DEBUG INFO WARN ERROR FATAL UNKNOWN)
|
@@ -81,6 +81,14 @@ describe StrftimeLogger do
|
|
81
81
|
expect(File.read("#{log_dir}/application.log")).to eq "#{now} [WARN] test\n"
|
82
82
|
end
|
83
83
|
|
84
|
+
it 'log_level=' do
|
85
|
+
logger = StrftimeLogger.new("#{log_dir}/application.log")
|
86
|
+
logger.log_level = 'WARN'
|
87
|
+
logger.info("test")
|
88
|
+
logger.warn("test")
|
89
|
+
expect(File.read("#{log_dir}/application.log")).to eq "#{now} [WARN] test\n"
|
90
|
+
end
|
91
|
+
|
84
92
|
class MockAdapter
|
85
93
|
def initialize(level, path)
|
86
94
|
end
|
data/strftime_logger.gemspec
CHANGED
@@ -4,9 +4,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "strftime_logger"
|
7
|
-
gem.version = "0.0.
|
7
|
+
gem.version = "0.0.2"
|
8
8
|
gem.authors = ["Naotoshi Seo"]
|
9
|
-
gem.email = ["
|
9
|
+
gem.email = ["sonots@gmail.com"]
|
10
10
|
gem.description = %q{A logger treats log rotation in strftime fashion}
|
11
11
|
gem.summary = %q{A logger treats log rotation in strftime fashion.}
|
12
12
|
gem.homepage = "https://github.com/sonots/strftime-logger"
|
metadata
CHANGED
@@ -1,23 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strftime_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A logger treats log rotation in strftime fashion
|
14
14
|
email:
|
15
|
-
-
|
15
|
+
- sonots@gmail.com
|
16
16
|
executables: []
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- ".gitignore"
|
21
|
+
- ".travis.yml"
|
21
22
|
- CHANGELOG.md
|
22
23
|
- Gemfile
|
23
24
|
- LICENSE.txt
|
@@ -56,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
57
|
version: '0'
|
57
58
|
requirements: []
|
58
59
|
rubyforge_project:
|
59
|
-
rubygems_version: 2.2.
|
60
|
+
rubygems_version: 2.2.0
|
60
61
|
signing_key:
|
61
62
|
specification_version: 4
|
62
63
|
summary: A logger treats log rotation in strftime fashion.
|