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 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