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.2.4"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject (readonly)

Returns the value of attribute config.



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

def config
  @config
end

.logger_regexpObject (readonly)

Returns the value of attribute logger_regexp.



18
19
20
# File 'lib/steno.rb', line 18

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.



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/steno.rb', line 90

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

    @loggers.each do |name, logger|
      if name =~ @logger_regexp
        logger.level = @config.default_log_level
      end
    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.



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

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.



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

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



109
110
111
112
113
114
115
116
117
# File 'lib/steno.rb', line 109

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.



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

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