Class: StrftimeLogger

Inherits:
Object
  • Object
show all
Includes:
Severity
Defined in:
lib/strftime_logger.rb,
lib/strftime_logger/bridge.rb,
lib/strftime_logger/formatter.rb,
lib/strftime_logger/adapter/file.rb,
lib/strftime_logger/ltsv_formatter.rb

Defined Under Namespace

Modules: Severity Classes: Adapter, Bridge, Formatter, LtsvFormatter

Constant Summary collapse

SEV_LABEL =
[:debug, :info, :warn, :error, :fatal, :unknown]

Constants included from Severity

Severity::DEBUG, Severity::ERROR, Severity::FATAL, Severity::INFO, Severity::UNKNOWN, Severity::WARN

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, adapter = nil) ⇒ StrftimeLogger

Example:

StrftimeLogger.new('/var/log/foo/webapp.log.%Y%m%d') # String
StrftimeLogger.new('/var/log/foo/webapp.log.%Y%m%d_%H')

Exampl2:

# Hash
StrftimeLogger.new({
  debug:   '/var/log/foo/webapp.debug.log.%Y%m%d',
  info:    '/var/log/foo/webapp.info.log.%Y%m%d',
  warn:    '/var/log/foo/webapp.warn.log.%Y%m%d',
  error:   '/var/log/foo/webapp.error.log.%Y%m%d',
  fatal:   '/var/log/foo/webapp.fatal.log.%Y%m%d',
  unknown: '/var/log/foo/webapp.unknown.log.%Y%m%d'
})

Exampl3:

# With Specified Adapter
StrftimeLogger.new('/var/log/foo/webapp.log.%Y%m%d', [StrftimeLogger::Adapter::File])

Parameters:

  • path (Hash|IO|String)
  • adapters (Hash)


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/strftime_logger.rb', line 54

def initialize(path, adapter = nil)
  @level = DEBUG
  @default_formatter = StrftimeLogger::Formatter.new
  @formatter = nil

  if path.is_a?(Hash)
    @path = path
  else
    # make a hash
    keys = SEV_LABEL
    vals = [path] * keys.size
    @path = Hash[*(keys.zip(vals).flatten(1))]
  end

  if adapter.nil?
    @adapter = {}
  elsif adapter.is_a?(Hash)
    @adapter = adapter
  else
    # make a hash
    keys = SEV_LABEL
    vals = [adapter] * keys.size
    @adapter = Hash[*(keys.zip(vals).flatten(1))]
  end

  @bridge = {}
  SEV_LABEL.each do |level|
    @bridge[level] = StrftimeLogger::Bridge.new(level, @path[level], @adapter[level])
  end
end

Instance Attribute Details

#formatterObject

Returns the value of attribute formatter.



28
29
30
# File 'lib/strftime_logger.rb', line 28

def formatter
  @formatter
end

#levelObject

Logging severity threshold (e.g. Logger::INFO).



27
28
29
# File 'lib/strftime_logger.rb', line 27

def level
  @level
end

Instance Method Details

#add(severity, message = nil, &block) ⇒ Object Also known as: log

Parameters:

  • severity (Int)

    log severity



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

def add(severity, message = nil, &block)
  severity ||= UNKNOWN

  if @bridge.nil? or severity < @level
    return true
  end

  log_level = SEV_LABEL[severity]
  if @bridge[log_level].nil?
    @bridge[log_level] = StrftimeLogger::Adapter.new(log_level, @path[log_level])
  end

  @bridge[log_level].write(format_message(severity, message, &block))
  true
end

#closeObject



152
153
154
155
156
157
# File 'lib/strftime_logger.rb', line 152

def close
  SEV_LABEL.each do |level|
    next if @bridge[level].nil?
    @bridge[level].close
  end
end

#debug(msg, &block) ⇒ Object



103
104
105
# File 'lib/strftime_logger.rb', line 103

def debug(msg, &block)
  add(DEBUG, msg, &block)
end

#debug?Boolean

Returns true iff the current severity level allows for the printing of DEBUG messages.

Returns:

  • (Boolean)


134
# File 'lib/strftime_logger.rb', line 134

def debug?; @level <= DEBUG; end

#error(msg, &block) ⇒ Object



115
116
117
# File 'lib/strftime_logger.rb', line 115

def error(msg, &block)
  add(ERROR, msg, &block)
end

#error?Boolean

Returns true iff the current severity level allows for the printing of ERROR messages.

Returns:

  • (Boolean)


146
# File 'lib/strftime_logger.rb', line 146

def error?; @level <= ERROR; end

#fatal(msg, &block) ⇒ Object



119
120
121
# File 'lib/strftime_logger.rb', line 119

def fatal(msg,  &block)
  add(FATAL, msg, &block)
end

#fatal?Boolean

Returns true iff the current severity level allows for the printing of FATAL messages.

Returns:

  • (Boolean)


150
# File 'lib/strftime_logger.rb', line 150

def fatal?; @level <= FATAL; end

#format_message(severity, message = nil, &block) ⇒ Object



159
160
161
# File 'lib/strftime_logger.rb', line 159

def format_message(severity, message = nil, &block)
  (@formatter || @default_formatter).call(severity, message, &block)
end

#info(msg, &block) ⇒ Object



107
108
109
# File 'lib/strftime_logger.rb', line 107

def info(msg, &block)
  add(INFO, msg, &block)
end

#info?Boolean

Returns true iff the current severity level allows for the printing of INFO messages.

Returns:

  • (Boolean)


138
# File 'lib/strftime_logger.rb', line 138

def info?; @level <= INFO; end

#unknown(msg, &block) ⇒ Object



123
124
125
# File 'lib/strftime_logger.rb', line 123

def unknown(msg, &block)
  add(UNKNOWN, msg, &block)
end

#warn(msg, &block) ⇒ Object



111
112
113
# File 'lib/strftime_logger.rb', line 111

def warn(msg, &block)
  add(WARN, msg, &block)
end

#warn?Boolean

Returns true iff the current severity level allows for the printing of WARN messages.

Returns:

  • (Boolean)


142
# File 'lib/strftime_logger.rb', line 142

def warn?; @level <= WARN; end

#write(msg) ⇒ Object



127
128
129
130
# File 'lib/strftime_logger.rb', line 127

def write(msg)
  msg.chomp! if msg.respond_to?(:chomp!)
  add(INFO, msg)
end