The Logger
class provides a simple but sophisticated logging utility that you can use to output messages.
The messages have associated levels, such as INFO
or ERROR
that indicate their importance. You can then give the Logger
a level, and only messages at that level or higher will be printed.
For instance, in a production system, you may have your Logger
set to INFO
or even WARN
. When you are developing the system, however, you probably want to know about the program’s internal state, and would set the Logger
to DEBUG
.
require "logger" log = Logger.new(STDOUT) log.level = Logger::WARN # or log = Logger.new(STDOUT, level: Logger::WARN) log.debug("Created logger") log.info("Program started") log.warn("Nothing to do!") begin File.each_line("/foo/bar.log") do |line| unless line =~ /^(\w+) = (.*)$/ log.error("Line in wrong format: #{line}") end end rescue err log.fatal("Caught exception; exiting") log.fatal(err) end
If logging to multiple locations is required, an IO::MultiWriter
can be used.
file = File.new("production.log", "a") writer = IO::MultiWriter.new(file, STDOUT) log = Logger.new(writer) log.level = Logger::DEBUG log.debug("Created logger")
DEPRECATED Use Log
module instead
Severity::DEBUG
Severity::ERROR
Severity::FATAL
Severity::INFO
Severity::UNKNOWN
Severity::WARN
Creates a new logger that will log to the given io.
DEPRECATED Use Log
module instead
Calls the close method on the object passed to initialize
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to DEBUG
.
Logs message if the logger's current severity is lower or equal to DEBUG
.
Returns true
if the logger's current severity is lower or equal to DEBUG
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to ERROR
.
Logs message if the logger's current severity is lower or equal to ERROR
.
Returns true
if the logger's current severity is lower or equal to ERROR
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to FATAL
.
Logs message if the logger's current severity is lower or equal to FATAL
.
Returns true
if the logger's current severity is lower or equal to FATAL
.
Logs message if the logger's current severity is lower or equal to INFO
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to INFO
.
Returns true
if the logger's current severity is lower or equal to INFO
.
Logs message if severity is higher or equal with the logger's current severity.
DEPRECATED Use Log
module instead
Logs the message as returned from the given block if severity is higher or equal with the loggers current severity.
DEPRECATED Use Log
module instead
Logs message if the logger's current severity is lower or equal to UNKNOWN
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to UNKNOWN
.
Returns true
if the logger's current severity is lower or equal to UNKNOWN
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to WARN
.
Logs message if the logger's current severity is lower or equal to WARN
.
Returns true
if the logger's current severity is lower or equal to WARN
.
Reference
Reference
Object
Object
Creates a new logger that will log to the given io. If io is nil
then all log calls will be silently ignored.
DEPRECATED Use Log
module instead
Calls the close method on the object passed to initialize
.
Logs the message as returned from the given block if the logger's current severity is lower or equal to DEBUG
. The block is not run if the severity is higher. progname overrides a default progname set in this logger.
Logs message if the logger's current severity is lower or equal to DEBUG
. progname overrides a default progname set in this logger.
Logs the message as returned from the given block if the logger's current severity is lower or equal to ERROR
. The block is not run if the severity is higher. progname overrides a default progname set in this logger.
Logs message if the logger's current severity is lower or equal to ERROR
. progname overrides a default progname set in this logger.
Logs the message as returned from the given block if the logger's current severity is lower or equal to FATAL
. The block is not run if the severity is higher. progname overrides a default progname set in this logger.
Logs message if the logger's current severity is lower or equal to FATAL
. progname overrides a default progname set in this logger.
Customizable Proc
(with a reasonable default) which the Logger
uses to format and print its entries.
Use this setter to provide a custom formatter. The Logger
will invoke it with the following arguments:
Logger::Severity
Time
, the entry's timestampString
, the program name, if set when the logger was builtString
, the body of a messageIO
, the Logger's stream, to which you must write the final outputExample:
require "logger" logger = Logger.new(STDOUT) logger.progname = "YodaBot" logger.formatter = Logger::Formatter.new do |severity, datetime, progname, message, io| label = severity.unknown? ? "ANY" : severity.to_s io << label[0] << ", [" << datetime << " #" << Process.pid << "] " io << label.rjust(5) << " -- " << progname << ": " << message end logger.warn("Fear leads to anger. Anger leads to hate. Hate leads to suffering.") # Prints to the console: # "W, [2017-05-06 18:00:41 -0300 #11927] WARN -- # YodaBot: Fear leads to anger. Anger leads to hate. Hate leads to suffering."
Customizable Proc
(with a reasonable default) which the Logger
uses to format and print its entries.
Use this setter to provide a custom formatter. The Logger
will invoke it with the following arguments:
Logger::Severity
Time
, the entry's timestampString
, the program name, if set when the logger was builtString
, the body of a messageIO
, the Logger's stream, to which you must write the final outputExample:
require "logger" logger = Logger.new(STDOUT) logger.progname = "YodaBot" logger.formatter = Logger::Formatter.new do |severity, datetime, progname, message, io| label = severity.unknown? ? "ANY" : severity.to_s io << label[0] << ", [" << datetime << " #" << Process.pid << "] " io << label.rjust(5) << " -- " << progname << ": " << message end logger.warn("Fear leads to anger. Anger leads to hate. Hate leads to suffering.") # Prints to the console: # "W, [2017-05-06 18:00:41 -0300 #11927] WARN -- # YodaBot: Fear leads to anger. Anger leads to hate. Hate leads to suffering."
Logs message if the logger's current severity is lower or equal to INFO
. progname overrides a default progname set in this logger.
Logs the message as returned from the given block if the logger's current severity is lower or equal to INFO
. The block is not run if the severity is higher. progname overrides a default progname set in this logger.
Logs message if severity is higher or equal with the logger's current severity. progname overrides a default progname set in this logger.
DEPRECATED Use Log
module instead
Logs the message as returned from the given block if severity is higher or equal with the loggers current severity. The block is not run if severity is lower. progname overrides a default progname set in this logger.
DEPRECATED Use Log
module instead
Logs message if the logger's current severity is lower or equal to UNKNOWN
. progname overrides a default progname set in this logger.
Logs the message as returned from the given block if the logger's current severity is lower or equal to UNKNOWN
. The block is not run if the severity is higher. progname overrides a default progname set in this logger.
Logs the message as returned from the given block if the logger's current severity is lower or equal to WARN
. The block is not run if the severity is higher. progname overrides a default progname set in this logger.
Logs message if the logger's current severity is lower or equal to WARN
. progname overrides a default progname set in this logger.
© 2012–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/Logger.html