spawning-logger 0.0.2 → 0.0.3
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/README.md +35 -2
- data/lib/spawning_logger.rb +32 -1
- data/lib/version.rb +1 -1
- data/test/spawning_logger_test.rb +19 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bb688e3f25c13c0b26d0e5c960d03fa77b57910
|
4
|
+
data.tar.gz: 833177faf0509500ffb4d14a9e0badb143b7613d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2de04e2356e15c594f744f3013f8de70511a25042fe685a63bb085e29c4e6cb5e8108ec10497a2fb5eb394473c38208bafd003e5c8b189a4801ce40974e600f
|
7
|
+
data.tar.gz: 362e925786791024ab90f72ffe52ecb7de04c013a88362c8c4761c3927dc5f3917e3584f35282f02e30b75fdec34ee723d19859040a13892f527767227d7f7cb
|
data/README.md
CHANGED
@@ -10,10 +10,20 @@ This logger can spawn sub-loggers with different files, each of those file's nam
|
|
10
10
|
|
11
11
|
Also supports a preset logfile subdirectory in case you create many subloggers (for example you might be interested in splitting development, production, test logs into subdirectories).
|
12
12
|
|
13
|
-
Only the constructor is modified and the spawning factory method added, everything else is delegated to the ruby stdlib ::Logger class.
|
14
|
-
|
13
|
+
Only the constructor is modified and the spawning factory method added, everything else is delegated to the ruby stdlib ::Logger class.
|
15
14
|
## Examples:
|
16
15
|
|
16
|
+
### quick-n-dirty:
|
17
|
+
```ruby
|
18
|
+
require 'spawning_logger'
|
19
|
+
logger = SpawningLogger.new('server.log')
|
20
|
+
|
21
|
+
logger.info('special test message')
|
22
|
+
logger.spawn('special').info('special test message')
|
23
|
+
|
24
|
+
# => writes message into ./server.log and ./server_special.log
|
25
|
+
```
|
26
|
+
|
17
27
|
### 1) usage same as ::Logger
|
18
28
|
|
19
29
|
```ruby
|
@@ -59,3 +69,26 @@ child_logger = logger.spawn('1')
|
|
59
69
|
# => creates ./log/production/server.log
|
60
70
|
# => creates ./log/production/server_worker_1.log
|
61
71
|
```
|
72
|
+
|
73
|
+
|
74
|
+
### 5) log into main logfile and into a child logger's logfile
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
logger = SpawningLogger.new('log/server.log')
|
78
|
+
logger.send_self_and_spawn(:error, "worker_1", "server shutdown")
|
79
|
+
|
80
|
+
# => "server shutdown" will show up in server.log and in server_worker_1.log
|
81
|
+
```
|
82
|
+
|
83
|
+
|
84
|
+
### 6) logger spawning recursion
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
logger = SpawningLogger.new('log/server.log')
|
88
|
+
child = logger.spawn('child1')
|
89
|
+
sub_child = child.spawn('child2')
|
90
|
+
|
91
|
+
# => creates ./log/production/server.log
|
92
|
+
# => creates ./log/production/server_child1.log
|
93
|
+
# => creates ./log/production/server_child1_child2.log
|
94
|
+
```
|
data/lib/spawning_logger.rb
CHANGED
@@ -53,6 +53,29 @@
|
|
53
53
|
# # => creates ./log/production/server.log
|
54
54
|
# # => creates ./log/production/server_worker_1.log
|
55
55
|
# ```
|
56
|
+
#
|
57
|
+
#
|
58
|
+
# ### 5) log into main logfile and into a child logger's logfile
|
59
|
+
#
|
60
|
+
# ```ruby
|
61
|
+
# logger = SpawningLogger.new('log/server.log')
|
62
|
+
# logger.send_self_and_spawn(:error, "worker_1", "server shutdown")
|
63
|
+
#
|
64
|
+
# # => "server shutdown" will show up in server.log and in server_worker_1.log
|
65
|
+
# ```
|
66
|
+
#
|
67
|
+
#
|
68
|
+
# ### 6) logger spawning recursion
|
69
|
+
#
|
70
|
+
# ```ruby
|
71
|
+
# logger = SpawningLogger.new('log/server.log')
|
72
|
+
# child = logger.spawn('child1')
|
73
|
+
# sub_child = child.spawn('child2')
|
74
|
+
#
|
75
|
+
# # => creates ./log/production/server.log
|
76
|
+
# # => creates ./log/production/server_child1.log
|
77
|
+
# # => creates ./log/production/server_child1_child2.log
|
78
|
+
# ```
|
56
79
|
|
57
80
|
require 'logger'
|
58
81
|
|
@@ -101,6 +124,14 @@ class SpawningLogger < ::Logger
|
|
101
124
|
@child_loggers[child_name]
|
102
125
|
end
|
103
126
|
|
127
|
+
# logs into the main logfile and also logs into a spawned logfile.
|
128
|
+
# @param method The method name to call, like :error, :info, :debug, ...
|
129
|
+
# @param message the message to send to both loggers
|
130
|
+
def send_self_and_spawn(child_name, method, message)
|
131
|
+
self.send(method, message)
|
132
|
+
self.spawn(child_name).send(method, message)
|
133
|
+
end
|
134
|
+
|
104
135
|
protected
|
105
136
|
|
106
137
|
# creates a logger for child_name. uses child_name and
|
@@ -122,7 +153,7 @@ class SpawningLogger < ::Logger
|
|
122
153
|
file_name = file_basename + File.extname(@file_name)
|
123
154
|
|
124
155
|
file_path = File.join(@log_dir, file_name)
|
125
|
-
|
156
|
+
self.class.new(file_path)
|
126
157
|
end
|
127
158
|
|
128
159
|
end
|
data/lib/version.rb
CHANGED
@@ -52,6 +52,25 @@ class SpawningLoggerTest < MiniTest::Test
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
def test_send_self_and_spawn_calls_both
|
56
|
+
logger = SpawningLogger.new(@logfile_path)
|
57
|
+
logger.send_self_and_spawn("childid", :error, "test_self_and_spawn_calls_both")
|
58
|
+
|
59
|
+
# make sure log message shows up in main logfile and in spawned logfile
|
60
|
+
[@logfile_path, File.join(@log_dir, 'test_file_childid.log')].each do |path|
|
61
|
+
result = File.read(path)
|
62
|
+
assert_match(/test_self_and_spawn_calls_both/, result)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_child_loggers_can_spawn_their_own_child_loggers
|
67
|
+
child = SpawningLogger.new(@logfile_path).spawn('child1')
|
68
|
+
sub_child = child.spawn('child2')
|
69
|
+
|
70
|
+
assert_kind_of(::Logger, sub_child)
|
71
|
+
assert File.exist?(File.join(@log_dir, 'test_file_child1_child2.log'))
|
72
|
+
end
|
73
|
+
|
55
74
|
def test_creates_child_logger_only_once
|
56
75
|
skip "NYI"
|
57
76
|
# TODO
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spawning-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Seeger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|