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) 連結
執行個體公開方法
<<(message) 連結
broadcast_to(*loggers) 連結
將記錄器加入廣播。
broadcast_logger = ActiveSupport::BroadcastLogger.new
broadcast_logger.broadcast_to(Logger.new(STDOUT), Logger.new(STDERR))
close() 連結
debug(*args, &block) 連結
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