[英]Setting up ruby on rails logs
我正在调查日志记录操作,例如,当您创建一个新用户时,它将其发送到记录器等。因此,每个操作都被记录下来。 我可以看到logger.info如何将信息发送到development.log文件。
我想知道如何设置一个不同的文件(例如users.log),然后在记录行或变量时将其保存在该日志文件中而不是development.log中?
您可以指定配置文件中使用的文件路径,该路径可能因环境而异,如下所示:
config.paths.log = "/some/path/#{Rails.env}.log"
如果要为每个模型创建不同的日志文件,则只需在需要时创建一个logger对象,如本答案所述 。
但是,如果您只是想根据生成日志的方式标记不同的日志,则使用标记日志记录可能会更容易:
logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
logger.tagged("BCX") { logger.info "Stuff" } # Logs "[BCX] Stuff"
logger.tagged("BCX", "Jason") { logger.info "Stuff" } # Logs "[BCX] [Jason] Stuff"
logger.tagged("BCX") { logger.tagged("Jason") { logger.info "Stuff" } } # Logs "[BCX] [Jason] Stuff"
Ruby在其标准库中有一个Logger
类: http : //ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger.html
您将实例化该实例并将其传递给新日志文件的文件路径,如下所示:
user_log = File.open('logs/users.log', File::WRONLY | File::APPEND)
您可以将其放置在控制器可以使用的控制器方法中。 第一个字符串参数是日志文件的路径,随后的参数是打开文件以仅用于写入和附加(因此,每个日志行都添加到日志中,而不是每次都覆盖它)。
您可以通过设置格式化程序来自定义每条日志行的格式:
user_log.formatter = proc { |severity, datetime, progname, msg|
"#{severity}, #{datetime}, #{progname}, #{msg.dump}"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.