ruby-on-rails – 如何在rails中进行拆分日志记录? (某些级别为
我希望能够在我的配置文件中使用rails日志指定类似的内容:
logger(STDOUT).level = [:debug,:info,:warn] logger(STDERR).level = [:error,:fatal] 让我unicorn_app_server_stdout.log和unicorn_app_server_stderr.log与正确的信息(在诊断标准输出和错误的标准错误)填充我相信这是Unix的一个相当长期模型 但所有的rails指南我似乎已经找到了关于将logger定义为logger.new(STDOUT)或logger.new(STDERR)但不在一起的讨论 大多数网络服务器都有stderr和stdout的这个上下文,但看起来rails只有stdout或stderr的概念,但不是在一起这是正确的吗?我是否需要使用其他日志记录gem才能获得此功能?或者我可以用标准导轨做到这一点吗?如果是这样的话? 解决方法
几个月前,我正在以同样的目标研究这个主题.现在我再次去调查,我得出结论,我采取了正确的决定.
我使用yell-rails gem,它是宝石大喊的包装. 它非常容易安装并完成工作: >将gem’yell-rails’添加到Gemfile 用于生产: production: :adapters: - :file: :level: 'lte.warn' :filename: 'log/warn.log' - :file: :level: 'gte.error' :filename: 'log/error.log' 此外,它有几个很酷的选择. 编辑:这是我研究的结果: Rails 3.2 由于Rails使用Rails.logger来记录其信息,因此它提供了一个setter以便在其位置使用其他记录器.在Rails 3.2中,记录器是一个类实例变量@@ logger,然后在应用程序中只允许一个记录器. 在application bootstrap,记录器设置有ActiveSupport :: TaggedLogging的实例,它是ActiveSupport :: BufferedLogger的包装器,以及std-lib的最后一个uses ruby?? Logger. 要将日志发送到控制台,它使用中间件:Rails::Rack::LogTailer 此时,您可以打开任何这些类(TaggedLogging,BufferedLogger,Logger)并编写一些代码使其按预期工作,或者您可以使用Rails提供的工具替换记录器. Rails 4 BufferedLogger不再使用,而不是Logger Rails使用ActiveSupport :: Logger<记录仪.它包括一个类方法broadcast,允许乘以记录器.此方法也用于将日志发送到console. 我玩了这些设置,然后我输入了一个初始化程序,我把它作为让你实现目标的起点: warn = ActiveSupport::Logger.new('log/logfilewarn.log') warn.level = Logger::DEBUG Rails.logger.extend(ActiveSupport::Logger.broadcast(warn)) error = ActiveSupport::Logger.new('log/logfileerror.log') error.level = Logger::ERROR Rails.logger.extend(ActiveSupport::Logger.broadcast(error)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |