spawning-logger 0.0.2 → 0.0.3

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: 5780ad3f11ff125fb15075028a3f7ad487040610
4
- data.tar.gz: 20087f952ef516872142d8922393fa46cd1f32ca
3
+ metadata.gz: 5bb688e3f25c13c0b26d0e5c960d03fa77b57910
4
+ data.tar.gz: 833177faf0509500ffb4d14a9e0badb143b7613d
5
5
  SHA512:
6
- metadata.gz: 8781d2df8c8a947b376171b192c0dfd7a9f2da3b566479c30a7938a008f50ce55675df4dee379ed512cc70cd44090851a154c13a3ed850765756036be1d855a1
7
- data.tar.gz: 3ddd6817ae776b5e46dbcd796df8ebee939eb21e3255c39770bd2e08982324ff7aae030db9066a65de842065d46046106b409edc9832072b488bfa2c17f33a79
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
+ ```
@@ -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
- ::Logger.new(file_path)
156
+ self.class.new(file_path)
126
157
  end
127
158
 
128
159
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'logger'
2
2
 
3
3
  class SpawningLogger < ::Logger
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
@@ -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.2
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: 2014-12-11 00:00:00.000000000 Z
11
+ date: 2015-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake