加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在rails中进行拆分日志记录? (某些级别为

发布时间:2020-12-17 02:23:24 所属栏目:百科 来源:网络整理
导读:我希望能够在我的配置文件中使用rails日志指定类似的内容: logger(STDOUT).level = [:debug,:info,:warn]logger(STDERR).level = [:error,:fatal] 让我unicorn_app_server_stdout.log和unicorn_app_server_stderr.log与正确的信息(在诊断标准输出和错误的标
我希望能够在我的配置文件中使用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
>运行:rails generate yell:install
>在config / yell.yml文件中设置配置

用于生产:

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))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读