Module: Steno

Defined in:
lib/steno.rb,
lib/steno/config.rb,
lib/steno/errors.rb,
lib/steno/logger.rb,
lib/steno/record.rb,
lib/steno/context.rb,
lib/steno/sink/io.rb,
lib/steno/version.rb,
lib/steno/log_level.rb,
lib/steno/sink/base.rb,
lib/steno/codec/base.rb,
lib/steno/codec/json.rb,
lib/steno/sink/counter.rb,
lib/steno/tagged_logger.rb,
lib/steno/json_prettifier.rb

Defined Under Namespace

Modules: Codec, Context, Sink Classes: Config, Error, JsonPrettifier, LogLevel, Logger, Record, TaggedLogger

Constant Summary collapse

VERSION =
'1.3.5'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject (readonly)

Returns the value of attribute config.



16
17
18
# File 'lib/steno.rb', line 16

def config
  @config
end

.logger_regexpObject (readonly)

Returns the value of attribute logger_regexp.



16
17
18
# File 'lib/steno.rb', line 16

def logger_regexp
  @logger_regexp
end

Class Method Details

.clear_logger_regexpnil

Clears the logger regexp, if set. Resets the level of any loggers matching the regex to the default log level.

Returns:

  • (nil)


88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/steno.rb', line 88

def clear_logger_regexp
  @loggers_lock.synchronize do
    return if @logger_regexp.nil?

    @loggers.each do |name, logger|
      logger.level = @config.default_log_level if name =~ @logger_regexp
    end

    @logger_regexp = nil
    @logger_regexp_level = nil
  end

  nil
end

.init(config) ⇒ nil

Initializes the logging system. This must be called exactly once before attempting to use any Steno class methods.

Parameters:

Returns:

  • (nil)


24
25
26
27
28
29
30
31
32
33
34
# File 'lib/steno.rb', line 24

def init(config)
  @config = config

  @loggers = {}
  @loggers_lock = Mutex.new

  @logger_regexp = nil
  @logger_regexp_level = nil

  nil
end

.logger(name) ⇒ Steno::Logger

Returns (and memoizes) the logger identified by name.

Parameters:

  • name (String)

Returns:



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/steno.rb', line 41

def logger(name)
  @loggers_lock.synchronize do
    logger = @loggers[name]

    if logger.nil?
      level = compute_level(name)

      logger = Steno::Logger.new(name, @config.sinks,
                                 level: level,
                                 context: @config.context)

      @loggers[name] = logger
    end

    logger
  end
end

.logger_level_snapshotHash

Returns Map of logger name => level.

Returns:

  • (Hash)

    Map of logger name => level



104
105
106
107
108
109
110
111
112
# File 'lib/steno.rb', line 104

def logger_level_snapshot
  @loggers_lock.synchronize do
    snapshot = {}

    @loggers.each { |name, logger| snapshot[name] = logger.level }

    snapshot
  end
end

.set_logger_regexp(regexp, level) ⇒ nil

Sets all loggers whose name matches regexp to level. Resets any loggers whose name matches the previous regexp but not the supplied regexp.

Parameters:

  • regexp (Regexp)
  • level (Symbol)

Returns:

  • (nil)


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/steno.rb', line 66

def set_logger_regexp(regexp, level)
  @loggers_lock.synchronize do
    @loggers.each do |name, logger|
      if name =~ regexp
        logger.level = level
      elsif @logger_regexp && (name =~ @logger_regexp)
        # Reset loggers affected by the old regexp but not by the new
        logger.level = @config.default_log_level
      end
    end

    @logger_regexp = regexp
    @logger_regexp_level = level

    nil
  end
end