Active Support Broadcast Logger
The Broadcast logger is a logger used to write messages to multiple IO
. It is commonly used in development to display messages on STDOUT and also write them to a file (development.log). With the Broadcast logger, you can broadcast your logs to a unlimited number of sinks.
The BroadcastLogger
acts as a standard logger and all methods you are used to are available. However, all the methods on this logger will propagate and be delegated to the other loggers that are part of the broadcast.
Broadcasting your logs.
stdout_logger = Logger.new(STDOUT)
file_logger = Logger.new("development.log")
broadcast = BroadcastLogger.new(stdout_logger, file_logger)
broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.
Add a logger to the broadcast.
stdout_logger = Logger.new(STDOUT)
broadcast = BroadcastLogger.new(stdout_logger)
file_logger = Logger.new("development.log")
broadcast.broadcast_to(file_logger)
broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.
Modifying the log level for all broadcasted loggers.
stdout_logger = Logger.new(STDOUT)
file_logger = Logger.new("development.log")
broadcast = BroadcastLogger.new(stdout_logger, file_logger)
broadcast.level = Logger::FATAL # Modify the log level for the whole broadcast.
Stop broadcasting log to a sink.
stdout_logger = Logger.new(STDOUT)
file_logger = Logger.new("development.log")
broadcast = BroadcastLogger.new(stdout_logger, file_logger)
broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.
broadcast.stop_broadcasting_to(file_logger)
broadcast.info("Hello world!") # Writes the log *only* to STDOUT.
At least one sink has to be part of the broadcast. Otherwise, your logs will not be written anywhere. For instance:
broadcast = BroadcastLogger.new
broadcast.info("Hello world") # The log message will appear nowhere.
Methods
- <<
- add
- broadcast_to
- close
- debug
- debug!
- debug?
- error
- error!
- error?
- fatal
- fatal!
- fatal?
- formatter=
- info
- info!
- info?
- level
- level=
- local_level=
- log
- new
- sev_threshold=
- stop_broadcasting_to
- unknown
- warn
- warn!
- warn?
Included Modules
Attributes
[R] | broadcasts | Returns all the logger that are part of this broadcast. |
[R] | formatter | |
[RW] | progname |
Class Public methods
new(*loggers)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 62
def initialize(*loggers)
@broadcasts = []
@progname = "Broadcast"
broadcast_to(*loggers)
end
🔎 See on GitHub
Instance Public methods
<<(message)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 92
def <<(message)
dispatch { |logger| logger.<<(message) }
end
🔎 See on GitHub
add(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 96
def add(*args, &block)
dispatch { |logger| logger.add(*args, &block) }
end
🔎 See on GitHub
broadcast_to(*loggers)
Add logger(s) to the broadcast.
broadcast_logger = ActiveSupport::BroadcastLogger.new
broadcast_logger.broadcast_to(Logger.new(STDOUT), Logger.new(STDERR))
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 73
def broadcast_to(*loggers)
@broadcasts.concat(loggers)
end
🔎 See on GitHub
close()
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 142
def close
dispatch { |logger| logger.close }
end
🔎 See on GitHub
debug(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 101
def debug(*args, &block)
dispatch { |logger| logger.debug(*args, &block) }
end
🔎 See on GitHub
debug!()
Sets the log level to Logger::DEBUG for the whole broadcast.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 153
def debug!
dispatch { |logger| logger.debug! }
end
🔎 See on GitHub
debug?()
True
if the log level allows entries with severity Logger::DEBUG to be written to at least one broadcast. False
otherwise.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 148
def debug?
@broadcasts.any? { |logger| logger.debug? }
end
🔎 See on GitHub
error(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 113
def error(*args, &block)
dispatch { |logger| logger.error(*args, &block) }
end
🔎 See on GitHub
error!()
Sets the log level to Logger::ERROR for the whole broadcast.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 186
def error!
dispatch { |logger| logger.error! }
end
🔎 See on GitHub
error?()
True
if the log level allows entries with severity Logger::ERROR to be written to at least one broadcast. False
otherwise.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 181
def error?
@broadcasts.any? { |logger| logger.error? }
end
🔎 See on GitHub
fatal(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 117
def fatal(*args, &block)
dispatch { |logger| logger.fatal(*args, &block) }
end
🔎 See on GitHub
fatal!()
Sets the log level to Logger::FATAL for the whole broadcast.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 197
def fatal!
dispatch { |logger| logger.fatal! }
end
🔎 See on GitHub
fatal?()
True
if the log level allows entries with severity Logger::FATAL to be written to at least one broadcast. False
otherwise.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 192
def fatal?
@broadcasts.any? { |logger| logger.fatal? }
end
🔎 See on GitHub
formatter=(formatter)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 125
def formatter=(formatter)
dispatch { |logger| logger.formatter = formatter }
@formatter = formatter
end
🔎 See on GitHub
info(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 105
def info(*args, &block)
dispatch { |logger| logger.info(*args, &block) }
end
🔎 See on GitHub
info!()
Sets the log level to Logger::INFO for the whole broadcast.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 164
def info!
dispatch { |logger| logger.info! }
end
🔎 See on GitHub
info?()
True
if the log level allows entries with severity Logger::INFO to be written to at least one broadcast. False
otherwise.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 159
def info?
@broadcasts.any? { |logger| logger.info? }
end
🔎 See on GitHub
level()
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 88
def level
@broadcasts.map(&:level).min
end
🔎 See on GitHub
level=(level)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 131
def level=(level)
dispatch { |logger| logger.level = level }
end
🔎 See on GitHub
local_level=(level)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 136
def local_level=(level)
dispatch do |logger|
logger.local_level = level if logger.respond_to?(:local_level=)
end
end
🔎 See on GitHub
stop_broadcasting_to(logger)
Remove a logger from the broadcast. When a logger is removed, messages sent to the broadcast will no longer be written to its sink.
sink = Logger.new(STDOUT)
broadcast_logger = ActiveSupport::BroadcastLogger.new
broadcast_logger.stop_broadcasting_to(sink)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 84
def stop_broadcasting_to(logger)
@broadcasts.delete(logger)
end
🔎 See on GitHub
unknown(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 121
def unknown(*args, &block)
dispatch { |logger| logger.unknown(*args, &block) }
end
🔎 See on GitHub
warn(*args, &block)
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 109
def warn(*args, &block)
dispatch { |logger| logger.warn(*args, &block) }
end
🔎 See on GitHub
warn!()
Sets the log level to Logger::WARN for the whole broadcast.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 175
def warn!
dispatch { |logger| logger.warn! }
end
🔎 See on GitHub
warn?()
True
if the log level allows entries with severity Logger::WARN to be written to at least one broadcast. False
otherwise.
📝 Source code
# File activesupport/lib/active_support/broadcast_logger.rb, line 170
def warn?
@broadcasts.any? { |logger| logger.warn? }
end
🔎 See on GitHub