steno 1.2.4 → 1.3.5

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 (43) hide show
  1. checksums.yaml +5 -13
  2. data/NOTICE +14 -0
  3. data/Rakefile +6 -8
  4. data/bin/steno-prettify +24 -25
  5. data/lib/steno/codec/base.rb +1 -1
  6. data/lib/steno/codec/json.rb +24 -14
  7. data/lib/steno/codec.rb +2 -2
  8. data/lib/steno/config.rb +23 -30
  9. data/lib/steno/context.rb +3 -3
  10. data/lib/steno/json_prettifier.rb +31 -30
  11. data/lib/steno/log_level.rb +1 -2
  12. data/lib/steno/logger.rb +22 -26
  13. data/lib/steno/record.rb +5 -15
  14. data/lib/steno/sink/base.rb +2 -3
  15. data/lib/steno/sink/counter.rb +4 -8
  16. data/lib/steno/sink/eventlog.rb +16 -17
  17. data/lib/steno/sink/fluentd.rb +4 -5
  18. data/lib/steno/sink/io.rb +8 -12
  19. data/lib/steno/sink/syslog.rb +19 -15
  20. data/lib/steno/sink.rb +6 -6
  21. data/lib/steno/tagged_logger.rb +2 -3
  22. data/lib/steno/version.rb +1 -1
  23. data/lib/steno.rb +16 -21
  24. data/spec/spec_helper.rb +4 -4
  25. data/spec/support/barrier.rb +2 -2
  26. data/spec/support/shared_context_specs.rb +4 -4
  27. data/spec/unit/config_spec.rb +134 -133
  28. data/spec/unit/context_spec.rb +19 -19
  29. data/spec/unit/core_ext_spec.rb +14 -14
  30. data/spec/unit/json_codec_spec.rb +43 -23
  31. data/spec/unit/json_prettifier_spec.rb +25 -25
  32. data/spec/unit/log_level_spec.rb +8 -9
  33. data/spec/unit/logger_spec.rb +53 -53
  34. data/spec/unit/record_spec.rb +15 -15
  35. data/spec/unit/sink/counter_spec.rb +7 -7
  36. data/spec/unit/sink/eventlog_spec.rb +14 -15
  37. data/spec/unit/sink/fluentd_spec.rb +28 -28
  38. data/spec/unit/sink/io_spec.rb +62 -62
  39. data/spec/unit/sink/syslog_spec.rb +54 -30
  40. data/spec/unit/steno_spec.rb +33 -33
  41. data/spec/unit/tagged_logger_spec.rb +20 -18
  42. data/steno.gemspec +28 -28
  43. metadata +62 -53
@@ -1,4 +1,4 @@
1
- require "steno/sink/base"
1
+ require 'steno/sink/base'
2
2
 
3
3
  module Steno
4
4
  module Sink
@@ -6,7 +6,6 @@ module Steno
6
6
  end
7
7
 
8
8
  class Steno::Sink::Counter < Steno::Sink::Base
9
-
10
9
  def initialize
11
10
  # Map of String -> numeric count
12
11
  @counts = {}
@@ -17,17 +16,14 @@ class Steno::Sink::Counter < Steno::Sink::Base
17
16
  level = record.log_level.to_s
18
17
 
19
18
  @mutex.synchronize do
20
- unless @counts[level]
21
- @counts[level] = 0
22
- end
19
+ @counts[level] = 0 unless @counts[level]
23
20
  @counts[level] += 1
24
21
  end
25
22
  end
26
23
 
27
- def flush
28
- end
24
+ def flush; end
29
25
 
30
- def to_json
26
+ def to_json(*_args)
31
27
  hash = {}
32
28
  @mutex.synchronize do
33
29
  Steno::Logger::LEVELS.keys.each do |level_name|
@@ -1,21 +1,21 @@
1
1
  if Steno::Sink::WINDOWS
2
- require "steno/sink/base"
2
+ require 'steno/sink/base'
3
3
 
4
- require "singleton"
5
- require "thread"
4
+ require 'singleton'
5
+ require 'thread'
6
6
  require 'win32/eventlog'
7
7
 
8
8
  class Steno::Sink::Eventlog < Steno::Sink::Base
9
9
  include Singleton
10
10
 
11
11
  LOG_LEVEL_MAP = {
12
- :fatal => Win32::EventLog::ERROR_TYPE,
13
- :error => Win32::EventLog::ERROR_TYPE,
14
- :warn => Win32::EventLog::WARN_TYPE,
15
- :info => Win32::EventLog::INFO_TYPE,
16
- :debug => Win32::EventLog::INFO_TYPE,
17
- :debug1 => Win32::EventLog::INFO_TYPE,
18
- :debug2 => Win32::EventLog::INFO_TYPE,
12
+ fatal: Win32::EventLog::ERROR_TYPE,
13
+ error: Win32::EventLog::ERROR_TYPE,
14
+ warn: Win32::EventLog::WARN_TYPE,
15
+ info: Win32::EventLog::INFO_TYPE,
16
+ debug: Win32::EventLog::INFO_TYPE,
17
+ debug1: Win32::EventLog::INFO_TYPE,
18
+ debug2: Win32::EventLog::INFO_TYPE
19
19
  }
20
20
 
21
21
  def initialize
@@ -23,8 +23,8 @@ if Steno::Sink::WINDOWS
23
23
  @eventlog = nil
24
24
  end
25
25
 
26
- def open()
27
- @eventlog = Win32::EventLog::open('Application')
26
+ def open
27
+ @eventlog = Win32::EventLog.open('Application')
28
28
  end
29
29
 
30
30
  def add_record(record)
@@ -32,15 +32,14 @@ if Steno::Sink::WINDOWS
32
32
  pri = LOG_LEVEL_MAP[record.log_level]
33
33
 
34
34
  @eventlog.report_event(
35
- :source => 'CloudFoundry',
36
- :event_type => pri,
37
- :data => msg
35
+ source: 'CloudFoundry',
36
+ event_type: pri,
37
+ data: msg
38
38
  )
39
39
  end
40
40
 
41
41
  def flush
42
42
  nil
43
43
  end
44
-
45
44
  end
46
- end
45
+ end
@@ -6,7 +6,6 @@ require 'fluent-logger'
6
6
  # and fluent-logger at https://github.com/fluent/fluent-logger-ruby
7
7
  #
8
8
  class Steno::Sink::Fluentd < Steno::Sink::Base
9
-
10
9
  # @param [Hash] opts Key :tag_prefix tag prefix of fluent logs (default: steno)
11
10
  # Key :host fluentd host (default: 127.0.0.1)
12
11
  # Key :port fluentd port (deafult: 24224)
@@ -14,10 +13,10 @@ class Steno::Sink::Fluentd < Steno::Sink::Base
14
13
  def initialize(opts = {})
15
14
  super
16
15
 
17
- @fluentd = Fluent::Logger::FluentLogger.new(opts[:tag_prefix] || "steno",
18
- :host => opts[:host] || "127.0.0.1",
19
- :port => opts[:port] || 24224,
20
- :buffer_limit => opts[:buffer_limit] || Fluent::Logger::FluentLogger::BUFFER_LIMIT)
16
+ @fluentd = Fluent::Logger::FluentLogger.new(opts[:tag_prefix] || 'steno',
17
+ host: opts[:host] || '127.0.0.1',
18
+ port: opts[:port] || 24_224,
19
+ buffer_limit: opts[:buffer_limit] || Fluent::Logger::FluentLogger::BUFFER_LIMIT)
21
20
  @io_lock = Mutex.new
22
21
  end
23
22
 
data/lib/steno/sink/io.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "steno/sink/base"
1
+ require 'steno/sink/base'
2
2
 
3
3
  module Steno
4
4
  module Sink
@@ -16,15 +16,13 @@ class Steno::Sink::IO < Steno::Sink::Base
16
16
  # @return [Steno::Sink::IO]
17
17
  def for_file(path, opts = {})
18
18
  autoflush = true
19
- if opts.include?(:autoflush)
20
- autoflush = opts[:autoflush]
21
- end
19
+ autoflush = opts[:autoflush] if opts.include?(:autoflush)
22
20
 
23
- io = File.open(path, "a+")
21
+ io = File.open(path, 'a+')
24
22
 
25
23
  io.sync = autoflush
26
24
 
27
- new(io, :max_retries => opts[:max_retries])
25
+ new(io, max_retries: opts[:max_retries])
28
26
  end
29
27
  end
30
28
 
@@ -52,12 +50,10 @@ class Steno::Sink::IO < Steno::Sink::Base
52
50
  begin
53
51
  @io.write(bytes)
54
52
  rescue IOError => e
55
- if retries < @max_retries
56
- retries += 1
57
- retry
58
- else
59
- raise e
60
- end
53
+ raise e unless retries < @max_retries
54
+
55
+ retries += 1
56
+ retry
61
57
  end
62
58
  end
63
59
 
@@ -1,24 +1,24 @@
1
1
  unless Steno::Sink::WINDOWS
2
- require "steno/sink/base"
2
+ require 'steno/sink/base'
3
3
 
4
- require "singleton"
5
- require "thread"
6
- require "syslog"
4
+ require 'singleton'
5
+ require 'thread'
6
+ require 'syslog/logger'
7
7
 
8
8
  class Steno::Sink::Syslog < Steno::Sink::Base
9
9
  include Singleton
10
10
 
11
11
  MAX_MESSAGE_SIZE = 1024 * 3
12
- TRUNCATE_POSTFIX = "..."
12
+ TRUNCATE_POSTFIX = '...'
13
13
 
14
14
  LOG_LEVEL_MAP = {
15
- :fatal => Syslog::LOG_CRIT,
16
- :error => Syslog::LOG_ERR,
17
- :warn => Syslog::LOG_WARNING,
18
- :info => Syslog::LOG_INFO,
19
- :debug => Syslog::LOG_DEBUG,
20
- :debug1 => Syslog::LOG_DEBUG,
21
- :debug2 => Syslog::LOG_DEBUG,
15
+ fatal: Syslog::LOG_CRIT,
16
+ error: Syslog::LOG_ERR,
17
+ warn: Syslog::LOG_WARNING,
18
+ info: Syslog::LOG_INFO,
19
+ debug: Syslog::LOG_DEBUG,
20
+ debug1: Syslog::LOG_DEBUG,
21
+ debug2: Syslog::LOG_DEBUG
22
22
  }
23
23
 
24
24
  def initialize
@@ -30,14 +30,18 @@ unless Steno::Sink::WINDOWS
30
30
 
31
31
  def open(identity)
32
32
  @identity = identity
33
- @syslog = Syslog.open(@identity, Syslog::LOG_PID, Syslog::LOG_USER)
33
+
34
+ Syslog::Logger.new(@identity)
35
+ @syslog = Syslog::Logger.syslog
34
36
  end
35
37
 
36
38
  def add_record(record)
39
+ return if record.log_level == :off
40
+
37
41
  record = truncate_record(record)
38
42
  msg = @codec.encode_record(record)
39
43
  pri = LOG_LEVEL_MAP[record.log_level]
40
- @syslog_lock.synchronize { @syslog.log(pri, "%s", msg) }
44
+ @syslog_lock.synchronize { @syslog.log(pri, '%s', msg) }
41
45
  end
42
46
 
43
47
  def flush
@@ -57,4 +61,4 @@ unless Steno::Sink::WINDOWS
57
61
  record.data)
58
62
  end
59
63
  end
60
- end
64
+ end
data/lib/steno/sink.rb CHANGED
@@ -1,6 +1,6 @@
1
- require "steno/sink/base"
2
- require "steno/sink/io"
3
- require "steno/sink/syslog"
4
- require "steno/sink/fluentd"
5
- require "steno/sink/counter"
6
- require "steno/sink/eventlog"
1
+ require 'steno/sink/base'
2
+ require 'steno/sink/io'
3
+ require 'steno/sink/syslog'
4
+ require 'steno/sink/fluentd'
5
+ require 'steno/sink/counter'
6
+ require 'steno/sink/eventlog'
@@ -1,11 +1,10 @@
1
- require "steno/logger"
1
+ require 'steno/logger'
2
2
 
3
3
  module Steno
4
4
  end
5
5
 
6
6
  # Provides a proxy that allows persistent user data
7
7
  class Steno::TaggedLogger
8
-
9
8
  attr_reader :proxied_logger
10
9
  attr_accessor :user_data
11
10
 
@@ -18,7 +17,7 @@ class Steno::TaggedLogger
18
17
  end
19
18
 
20
19
  def define_logf_method(name)
21
- define_method(name.to_s + "f") { |fmt, *args| log(name, fmt % args) }
20
+ define_method(name.to_s + 'f') { |fmt, *args| log(name, fmt % args) }
22
21
  end
23
22
  end
24
23
 
data/lib/steno/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steno
2
- VERSION = "1.2.4"
2
+ VERSION = '1.3.5'
3
3
  end
data/lib/steno.rb CHANGED
@@ -1,21 +1,19 @@
1
- require "thread"
2
-
3
- require "steno/codec"
4
- require "steno/config"
5
- require "steno/context"
6
- require "steno/errors"
7
- require "steno/log_level"
8
- require "steno/logger"
9
- require "steno/tagged_logger"
10
- require "steno/record"
11
- require "steno/sink"
12
- require "steno/version"
1
+ require 'thread'
2
+
3
+ require 'steno/codec'
4
+ require 'steno/config'
5
+ require 'steno/context'
6
+ require 'steno/errors'
7
+ require 'steno/log_level'
8
+ require 'steno/logger'
9
+ require 'steno/tagged_logger'
10
+ require 'steno/record'
11
+ require 'steno/sink'
12
+ require 'steno/version'
13
13
 
14
14
  module Steno
15
15
  class << self
16
-
17
- attr_reader :config
18
- attr_reader :logger_regexp
16
+ attr_reader :config, :logger_regexp
19
17
 
20
18
  # Initializes the logging system. This must be called exactly once before
21
19
  # attempting to use any Steno class methods.
@@ -48,8 +46,8 @@ module Steno
48
46
  level = compute_level(name)
49
47
 
50
48
  logger = Steno::Logger.new(name, @config.sinks,
51
- :level => level,
52
- :context => @config.context)
49
+ level: level,
50
+ context: @config.context)
53
51
 
54
52
  @loggers[name] = logger
55
53
  end
@@ -92,9 +90,7 @@ module Steno
92
90
  return if @logger_regexp.nil?
93
91
 
94
92
  @loggers.each do |name, logger|
95
- if name =~ @logger_regexp
96
- logger.level = @config.default_log_level
97
- end
93
+ logger.level = @config.default_log_level if name =~ @logger_regexp
98
94
  end
99
95
 
100
96
  @logger_regexp = nil
@@ -104,7 +100,6 @@ module Steno
104
100
  nil
105
101
  end
106
102
 
107
-
108
103
  # @return [Hash] Map of logger name => level
109
104
  def logger_level_snapshot
110
105
  @loggers_lock.synchronize do
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
- require "rack/test"
2
- require "rspec"
1
+ require 'rack/test'
2
+ require 'rspec'
3
3
 
4
- require "steno"
4
+ require 'steno'
5
5
 
6
- Dir["./spec/support/**/*.rb"].each { |file| require file }
6
+ Dir['./spec/support/**/*.rb'].each { |file| require file }
@@ -1,4 +1,4 @@
1
- require "thread"
1
+ require 'thread'
2
2
 
3
3
  class Barrier
4
4
  def initialize
@@ -16,7 +16,7 @@ class Barrier
16
16
 
17
17
  def wait
18
18
  @lock.synchronize do
19
- @cvar.wait(@lock) if !@done
19
+ @cvar.wait(@lock) unless @done
20
20
  end
21
21
  end
22
22
  end
@@ -1,7 +1,7 @@
1
- shared_context :steno_context do
2
- it "should support clearing context local data" do
3
- context.data["test"] = "value"
1
+ shared_examples 'steno context' do
2
+ it 'supports clearing context local data' do
3
+ context.data['test'] = 'value'
4
4
  context.clear
5
- context.data["test"].should be_nil
5
+ expect(context.data['test']).to be_nil
6
6
  end
7
7
  end