tiny_log 1.0.4 → 2.0.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tiny_log.rb +29 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85cff9236f798df629886d40366c8a673ea208af89d7b37bea42038ea228e030
4
- data.tar.gz: bf24cddc2ebf348ac713c0a066731fb1b2ce296db588eb77388ac920899c6a79
3
+ metadata.gz: 9e5e2cc1eee03fc86a34571b2fb6e55a080162bb3ac6b9598bbb34f0ef491afb
4
+ data.tar.gz: b68b82266ca779f4b83e700ca1e13314255a5ad481951b37d54a406c1aa715ba
5
5
  SHA512:
6
- metadata.gz: 8a77fd0f56106ddedd77e036643cfeff75d3c5a36d7034255e8b766ecd419ece90e7611ef183606e43c2fd8ddd2b5eabd1122d8706ac52057543ef9d4729526c
7
- data.tar.gz: 2be85ce2aa21c78ecf995b7853937ad1517b0468ff4c3b450b0fa9c1d3dd5ad0cc1efe8a86afadba97848c5f186bf4ceadc7e5ef4baa5aacc77c15616652b6a8
6
+ metadata.gz: d110256b17ab42ebf1d4acde5dd10c981ad7889245dd37ae0e38e4b890e5a46a3224459e87491aac210ea7de88ff0979e4f14c21bc18e74db1659afe33febf82
7
+ data.tar.gz: 00c580ecfdecb2a8882264ed92b8d4f1cc80631fa9e0a3648eedd6bae9581257d0148110f116c757c50857dfe3249dfd10472c64d312e6b55606065527a7cb3f
data/lib/tiny_log.rb CHANGED
@@ -16,19 +16,42 @@ class TinyLog
16
16
  # filename: the I/O stream to send log messages to
17
17
  # if unspecified, will default to $stdout
18
18
  # if specified, attempts to open a file with the specified name to append to
19
- def initialize(filename=nil)
19
+ # buffering: whether or not to buffer log output
20
+ # true, or not specified: log buffering is enabled
21
+ # false: log buffering is disabled - most useful for dev/test environments
22
+ # where you want to watch output in realtime
23
+ # background_thread: whether logging should be done in a background Thread
24
+ # true, or not specified, use a Thread to write to the log every 5 seconds
25
+ # false, write to the log immediately
26
+ def initialize(filename: nil, buffering: true, background_thread: true)
27
+ @buffering = !!buffering
20
28
  @io = filename.is_a?(String) ? File.open(filename, 'a') : $stdout
29
+
30
+ if background_thread
31
+ @msg_queue = Queue.new
32
+ @background_thread = Thread.new do |t|
33
+ loop do
34
+ @msg_queue
35
+ .length
36
+ .times{ @io.puts @msg_queue.shift }
37
+ sleep 5
38
+ end
39
+ end
40
+ end
21
41
  end
22
42
 
23
43
  # the clever bit that annotates the log message with a log level and UTC
24
44
  # timestamp
25
45
  def method_missing(prefix, *msgs)
26
- msgs.each do |m|
27
- m.to_s.lines.each do |l|
28
- @io.puts "#{Time.now.utc.iso8601(6)} #{Process.pid.to_s.rjust(6)} #{prefix.to_s.upcase} #{l}"
29
- end
30
- end
46
+ msgs.each{|m| _build_lines(m).each{|l| @background_thread ? @msg_queue << l : @io.puts(l) } }
47
+ @io.flush unless @buffering
31
48
 
32
49
  nil
33
50
  end
51
+
52
+ def _build_lines(m)
53
+ m.to_s.lines.map do |l|
54
+ "#{Time.now.utc.iso8601(6)} #{Process.pid.to_s.rjust(6)} #{prefix.to_s.upcase} #{l}"
55
+ end
56
+ end
34
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_log
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Lunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-18 00:00:00.000000000 Z
11
+ date: 2023-01-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: a tiny logger with almost no features
14
14
  email: jefflunt@gmail.com