Class: Logger
- Inherits:
-
Object
- Object
- Logger
- Includes:
- Severity
- Defined in:
- lib/logger.rb,
lib/logger/errors.rb,
lib/logger/period.rb,
lib/logger/version.rb,
lib/logger/severity.rb,
lib/logger/formatter.rb,
lib/logger/log_device.rb
Overview
not used after 1.2.7. just for compat.
Defined Under Namespace
Modules: Period, Severity Classes: Error, Formatter, LogDevice, ShiftingError
Constant Summary collapse
- ProgName =
"#{name}/#{rev}"
- VERSION =
"1.4.3"
Constants included from Severity
Severity::DEBUG, Severity::ERROR, Severity::FATAL, Severity::INFO, Severity::UNKNOWN, Severity::WARN
Instance Attribute Summary collapse
-
#formatter ⇒ Object
Logging formatter, as a
Proc
that will take four arguments and return the formatted message. -
#level ⇒ Object
(also: #sev_threshold)
Logging severity threshold (e.g.
Logger::INFO
). -
#progname ⇒ Object
Program name to include in log messages.
Instance Method Summary collapse
-
#<<(msg) ⇒ Object
Dump given message to the log device without any formatting.
-
#add(severity, message = nil, progname = nil) ⇒ Object
(also: #log)
:call-seq: Logger#add(severity, message = nil, progname = nil) { … }.
-
#close ⇒ Object
Close the logging device.
-
#datetime_format ⇒ Object
Returns the date format being used.
-
#datetime_format=(datetime_format) ⇒ Object
Set date-time format.
-
#debug(progname = nil, &block) ⇒ Object
Log a
DEBUG
message. -
#debug! ⇒ Object
Sets the severity to DEBUG.
-
#debug? ⇒ Boolean
Returns
true
iff the current severity level allows for the printing ofDEBUG
messages. -
#error(progname = nil, &block) ⇒ Object
Log an
ERROR
message. -
#error! ⇒ Object
Sets the severity to ERROR.
-
#error? ⇒ Boolean
Returns
true
iff the current severity level allows for the printing ofERROR
messages. -
#fatal(progname = nil, &block) ⇒ Object
Log a
FATAL
message. -
#fatal! ⇒ Object
Sets the severity to FATAL.
-
#fatal? ⇒ Boolean
Returns
true
iff the current severity level allows for the printing ofFATAL
messages. -
#info(progname = nil, &block) ⇒ Object
:call-seq: info(message) info(progname, &block).
-
#info! ⇒ Object
Sets the severity to INFO.
-
#info? ⇒ Boolean
Returns
true
iff the current severity level allows for the printing ofINFO
messages. -
#initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG, progname: nil, formatter: nil, datetime_format: nil, binmode: false, shift_period_suffix: '%Y%m%d') ⇒ Logger
constructor
:call-seq: Logger.new(logdev, shift_age = 0, shift_size = 1048576) Logger.new(logdev, shift_age = ‘weekly’) Logger.new(logdev, level: :info) Logger.new(logdev, progname: ‘progname’) Logger.new(logdev, formatter: formatter) Logger.new(logdev, datetime_format: ‘%Y-%m-%d %H:%M:%S’).
-
#reopen(logdev = nil) ⇒ Object
:call-seq: Logger#reopen Logger#reopen(logdev).
-
#unknown(progname = nil, &block) ⇒ Object
Log an
UNKNOWN
message. -
#warn(progname = nil, &block) ⇒ Object
Log a
WARN
message. -
#warn! ⇒ Object
Sets the severity to WARN.
-
#warn? ⇒ Boolean
Returns
true
iff the current severity level allows for the printing ofWARN
messages.
Constructor Details
#initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG, progname: nil, formatter: nil, datetime_format: nil, binmode: false, shift_period_suffix: '%Y%m%d') ⇒ Logger
:call-seq:
Logger.new(logdev, shift_age = 0, shift_size = 1048576)
Logger.new(logdev, shift_age = 'weekly')
Logger.new(logdev, level: :info)
Logger.new(logdev, progname: 'progname')
Logger.new(logdev, formatter: formatter)
Logger.new(logdev, datetime_format: '%Y-%m-%d %H:%M:%S')
Args
logdev
-
The log device. This is a filename (String), IO object (typically
STDOUT
,STDERR
, or an open file),nil
(it writes nothing) orFile::NULL
(same asnil
). shift_age
-
Number of old log files to keep, or frequency of rotation (
daily
,weekly
ormonthly
). Default value is 0, which disables log file rotation. shift_size
-
Maximum logfile size in bytes (only applies when
shift_age
is a positive Integer). Defaults to1048576
(1MB). level
-
Logging severity threshold. Default values is Logger::DEBUG.
progname
-
Program name to include in log messages. Default value is nil.
formatter
-
Logging formatter. Default values is an instance of Logger::Formatter.
datetime_format
-
Date and time format. Default value is ‘%Y-%m-%d %H:%M:%S’.
binmode
-
Use binary mode on the log device. Default value is false.
shift_period_suffix
-
The log file suffix format for
daily
,weekly
ormonthly
rotation. Default is ‘%Y%m%d’.
Description
Create an instance.
380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 |
# File 'lib/logger.rb', line 380 def initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG, progname: nil, formatter: nil, datetime_format: nil, binmode: false, shift_period_suffix: '%Y%m%d') self.level = level self.progname = progname @default_formatter = Formatter.new self.datetime_format = datetime_format self.formatter = formatter @logdev = nil if logdev && logdev != File::NULL @logdev = LogDevice.new(logdev, shift_age: shift_age, shift_size: shift_size, shift_period_suffix: shift_period_suffix, binmode: binmode) end end |
Instance Attribute Details
#formatter ⇒ Object
Logging formatter, as a Proc
that will take four arguments and return the formatted message. The arguments are:
severity
-
The Severity of the log message.
time
-
A Time instance representing when the message was logged.
progname
-
The #progname configured, or passed to the logger method.
msg
-
The Object the user passed to the log message; not necessarily a String.
The block should return an Object that can be written to the logging device via write
. The default formatter is used when no formatter is set.
300 301 302 |
# File 'lib/logger.rb', line 300 def formatter @formatter end |
#level ⇒ Object Also known as: sev_threshold
Logging severity threshold (e.g. Logger::INFO
).
245 246 247 |
# File 'lib/logger.rb', line 245 def level @level end |
#progname ⇒ Object
Program name to include in log messages.
274 275 276 |
# File 'lib/logger.rb', line 274 def progname @progname end |
Instance Method Details
#<<(msg) ⇒ Object
Dump given message to the log device without any formatting. If no log device exists, return nil
.
485 486 487 |
# File 'lib/logger.rb', line 485 def <<(msg) @logdev&.write(msg) end |
#add(severity, message = nil, progname = nil) ⇒ Object Also known as: log
:call-seq:
Logger#add(severity, message = nil, progname = nil) { ... }
Args
severity
-
Severity. Constants are defined in Logger namespace:
DEBUG
,INFO
,WARN
,ERROR
,FATAL
, orUNKNOWN
. message
-
The log message. A String or Exception.
progname
-
Program name string. Can be omitted. Treated as a message if no
message
andblock
are given. block
-
Can be omitted. Called to get a message string if
message
is nil.
Return
When the given severity is not high enough (for this particular logger), log no message, and return true
.
Description
Log a message if the given severity is high enough. This is the generic logging method. Users will be more inclined to use #debug, #info, #warn, #error, and #fatal.
Message format: message
can be any object, but it has to be converted to a String in order to log it. Generally, inspect
is used if the given object is not a String. A special case is an Exception
object, which will be printed in detail, including message, class, and backtrace. See #msg2str for the implementation if required.
Bugs
-
Logfile is not locked.
-
Append open does not need to lock file.
-
If the OS supports multi I/O, records possibly may be mixed.
459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 |
# File 'lib/logger.rb', line 459 def add(severity, = nil, progname = nil) severity ||= UNKNOWN if @logdev.nil? or severity < level return true end if progname.nil? progname = @progname end if .nil? if block_given? = yield else = progname progname = @progname end end @logdev.write( (format_severity(severity), Time.now, progname, )) true end |
#close ⇒ Object
Close the logging device.
572 573 574 |
# File 'lib/logger.rb', line 572 def close @logdev&.close end |
#datetime_format ⇒ Object
Returns the date format being used. See #datetime_format=
284 285 286 |
# File 'lib/logger.rb', line 284 def datetime_format @default_formatter.datetime_format end |
#datetime_format=(datetime_format) ⇒ Object
Set date-time format.
datetime_format
-
A string suitable for passing to
strftime
.
279 280 281 |
# File 'lib/logger.rb', line 279 def datetime_format=(datetime_format) @default_formatter.datetime_format = datetime_format end |
#debug(progname = nil, &block) ⇒ Object
Log a DEBUG
message.
See #info for more information.
494 495 496 |
# File 'lib/logger.rb', line 494 def debug(progname = nil, &block) add(DEBUG, nil, progname, &block) end |
#debug! ⇒ Object
Sets the severity to DEBUG.
310 |
# File 'lib/logger.rb', line 310 def debug!; self.level = DEBUG; end |
#debug? ⇒ Boolean
Returns true
iff the current severity level allows for the printing of DEBUG
messages.
307 |
# File 'lib/logger.rb', line 307 def debug?; level <= DEBUG; end |
#error(progname = nil, &block) ⇒ Object
Log an ERROR
message.
See #info for more information.
546 547 548 |
# File 'lib/logger.rb', line 546 def error(progname = nil, &block) add(ERROR, nil, progname, &block) end |
#error! ⇒ Object
Sets the severity to ERROR.
331 |
# File 'lib/logger.rb', line 331 def error!; self.level = ERROR; end |
#error? ⇒ Boolean
Returns true
iff the current severity level allows for the printing of ERROR
messages.
328 |
# File 'lib/logger.rb', line 328 def error?; level <= ERROR; end |
#fatal(progname = nil, &block) ⇒ Object
Log a FATAL
message.
See #info for more information.
555 556 557 |
# File 'lib/logger.rb', line 555 def fatal(progname = nil, &block) add(FATAL, nil, progname, &block) end |
#fatal! ⇒ Object
Sets the severity to FATAL.
338 |
# File 'lib/logger.rb', line 338 def fatal!; self.level = FATAL; end |
#fatal? ⇒ Boolean
Returns true
iff the current severity level allows for the printing of FATAL
messages.
335 |
# File 'lib/logger.rb', line 335 def fatal?; level <= FATAL; end |
#info(progname = nil, &block) ⇒ Object
:call-seq:
info()
info(progname, &block)
Log an INFO
message.
message
-
The message to log; does not need to be a String.
progname
-
In the block form, this is the #progname to use in the log message. The default can be set with #progname=.
block
-
Evaluates to the message to log. This is not evaluated unless the logger’s level is sufficient to log the message. This allows you to create potentially expensive logging messages that are only called when the logger is configured to show them.
Examples
logger.info("MainApp") { "Received connection from #{ip}" }
# ...
logger.info "Waiting for input from user"
# ...
logger.info { "User typed #{input}" }
You’ll probably stick to the second form above, unless you want to provide a program name (which you can do with #progname= as well).
Return
See #add.
528 529 530 |
# File 'lib/logger.rb', line 528 def info(progname = nil, &block) add(INFO, nil, progname, &block) end |
#info! ⇒ Object
Sets the severity to INFO.
317 |
# File 'lib/logger.rb', line 317 def info!; self.level = INFO; end |
#info? ⇒ Boolean
Returns true
iff the current severity level allows for the printing of INFO
messages.
314 |
# File 'lib/logger.rb', line 314 def info?; level <= INFO; end |
#reopen(logdev = nil) ⇒ Object
413 414 415 416 |
# File 'lib/logger.rb', line 413 def reopen(logdev = nil) @logdev&.reopen(logdev) self end |
#unknown(progname = nil, &block) ⇒ Object
Log an UNKNOWN
message. This will be printed no matter what the logger’s level is.
See #info for more information.
565 566 567 |
# File 'lib/logger.rb', line 565 def unknown(progname = nil, &block) add(UNKNOWN, nil, progname, &block) end |
#warn(progname = nil, &block) ⇒ Object
Log a WARN
message.
See #info for more information.
537 538 539 |
# File 'lib/logger.rb', line 537 def warn(progname = nil, &block) add(WARN, nil, progname, &block) end |
#warn! ⇒ Object
Sets the severity to WARN.
324 |
# File 'lib/logger.rb', line 324 def warn!; self.level = WARN; end |
#warn? ⇒ Boolean
Returns true
iff the current severity level allows for the printing of WARN
messages.
321 |
# File 'lib/logger.rb', line 321 def warn?; level <= WARN; end |