Active Support 广播 Logger
广播日志记录器是一个用于将消息写入多个 IO
的记录器。它通常在开发中用于在 STDOUT 上显示消息,并将它们写入文件 (development.log)。使用广播日志记录器,您可以将日志广播到无限数量的接收器。
BroadcastLogger
充当标准日志记录器,您可以使用所有熟悉的方法。但是,此日志记录器上的所有方法都将传播并委托给广播中包含的其他日志记录器。
广播您的日志。
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.
将日志记录器添加到广播中。
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.
修改所有广播日志记录器的日志级别。
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.
停止将日志广播到接收器。
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.
广播中必须至少包含一个接收器。否则,您的日志将不会写入任何地方。例如
broadcast = BroadcastLogger.new
broadcast.info("Hello world") # The log message will appear nowhere.
如果您将具有自定义方法的自定义日志记录器添加到广播中,则“BroadcastLogger”将代理它们并返回原始值,或根据广播中响应该方法的日志记录器数量返回原始值数组
class MyLogger < ::Logger
def loggable?
true
end
end
logger = BroadcastLogger.new
logger.loggable? # => A NoMethodError exception is raised because no loggers in the broadcasts could respond.
logger.broadcast_to(MyLogger.new(STDOUT))
logger.loggable? # => true
logger.broadcast_to(MyLogger.new(STDOUT))
puts logger.broadcasts # => [MyLogger, MyLogger]
logger.loggable? # [true, true]
- #
- A
- B
- C
- D
- E
- F
- I
- L
- N
- S
- U
- W
属性
[R] | 广播 | 返回所有属于此广播的日志记录器。 |
[R] | 格式化程序 | |
[RW] | 程序名称 |
类公共方法
new(*loggers) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 82 def initialize(*loggers) @broadcasts = [] @progname = "Broadcast" broadcast_to(*loggers) end
实例公共方法
<<(message) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 112 def <<(message) dispatch { |logger| logger.<<(message) } end
add(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 116 def add(*args, &block) dispatch { |logger| logger.add(*args, &block) } end
broadcast_to(*loggers) 链接
将日志记录器添加到广播中。
broadcast_logger = ActiveSupport::BroadcastLogger.new
broadcast_logger.broadcast_to(Logger.new(STDOUT), Logger.new(STDERR))
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 93 def broadcast_to(*loggers) @broadcasts.concat(loggers) end
close() 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 162 def close dispatch { |logger| logger.close } end
debug(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 121 def debug(*args, &block) dispatch { |logger| logger.debug(*args, &block) } end
debug!() 链接
将整个广播的日志级别设置为 Logger::DEBUG。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 173 def debug! dispatch { |logger| logger.debug! } end
debug?() 链接
如果日志级别允许将严重性为 Logger::DEBUG 的条目写入至少一个广播,则为 True
。否则为 False
。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 168 def debug? @broadcasts.any? { |logger| logger.debug? } end
error(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 133 def error(*args, &block) dispatch { |logger| logger.error(*args, &block) } end
error!() 链接
将整个广播的日志级别设置为 Logger::ERROR。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 206 def error! dispatch { |logger| logger.error! } end
error?() 链接
如果日志级别允许将严重性为 Logger::ERROR 的条目写入至少一个广播,则为 True
。否则为 False
。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 201 def error? @broadcasts.any? { |logger| logger.error? } end
fatal(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 137 def fatal(*args, &block) dispatch { |logger| logger.fatal(*args, &block) } end
fatal!() 链接
将整个广播的日志级别设置为 Logger::FATAL。
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 217 def fatal! dispatch { |logger| logger.fatal! } end
fatal?() 链接
如果日志级别允许将严重性为 Logger::FATAL 的条目写入至少一个广播,则为 True
。否则为 False
。
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 212 def fatal? @broadcasts.any? { |logger| logger.fatal? } end
formatter=(formatter) 链接
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 145 def formatter=(formatter) dispatch { |logger| logger.formatter = formatter } @formatter = formatter end
info(*args, &block) 链接
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 125 def info(*args, &block) dispatch { |logger| logger.info(*args, &block) } end
info!() 链接
将整个广播的日志级别设置为 Logger::INFO。
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 184 def info! dispatch { |logger| logger.info! } end
info?() 链接
如果日志级别允许将严重性为 Logger::INFO 的条目写入至少一个广播,则为 True
。否则为 False
。
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 179 def info? @broadcasts.any? { |logger| logger.info? } end
initialize_copy(other) 链接
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 221 def initialize_copy(other) @broadcasts = [] @progname = other.progname.dup @formatter = other.formatter.dup broadcast_to(*other.broadcasts.map(&:dup)) end
level() 链接
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 108 def level @broadcasts.map(&:level).min end
level=(level) 链接
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 151 def level=(level) dispatch { |logger| logger.level = level } end
local_level=(level) 链接
来源: 显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 156 def local_level=(level) dispatch do |logger| logger.local_level = level if logger.respond_to?(:local_level=) end end
stop_broadcasting_to(logger) 链接
从广播中移除一个日志记录器。当日志记录器被移除时,发送到广播的消息将不再写入其接收器。
sink = Logger.new(STDOUT)
broadcast_logger = ActiveSupport::BroadcastLogger.new
broadcast_logger.stop_broadcasting_to(sink)
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 104 def stop_broadcasting_to(logger) @broadcasts.delete(logger) end
unknown(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 141 def unknown(*args, &block) dispatch { |logger| logger.unknown(*args, &block) } end
warn(*args, &block) 链接
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 129 def warn(*args, &block) dispatch { |logger| logger.warn(*args, &block) } end
warn!() 链接
将整个广播的日志级别设置为 Logger::WARN。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 195 def warn! dispatch { |logger| logger.warn! } end
warn?() 链接
如果日志级别允许将严重性为 Logger::WARN 的条目写入至少一个广播,则为 True
。否则为 False
。
来源:显示 | 在 GitHub 上
# File activesupport/lib/active_support/broadcast_logger.rb, line 190 def warn? @broadcasts.any? { |logger| logger.warn? } end