如何在Rails中拆分日志记录?(对于stdout某些级别,对于stderr某些级别)

杰西·惠特姆(Jesse Whitham)

我希望能够在我的配置文件中使用rails日志指定类似这样的内容:

logger(STDOUT).level = [:debug, :info, :warn]
logger(STDERR).level = [:error, :fatal]

所以,我unicorn_app_server_stdout.logunicorn_app_server_stderr.log与正确的信息(已诊断stdout错误stderr),我相信这是一个相当长期的模型的Unix

但所有的导轨导我似乎找到了谈定义为记录仪logger.new(STDOUT)logger.new(STDERR)却不能在一起

大多数网络服务器具有的这种情况下stderr,并stdout但似乎只轨具有的概念stdoutstderr却不能在一起这是正确的?我是否需要使用另一个日志记录gem来获得此功能?还是可以使用标准导轨来做到这一点?如果可以,怎么办?

亚历山大·巴比奥

几个月前,我以相同的目标研究了这个主题。现在,我再次去调查,得出的结论是我采取了正确的行动。

我使用yell-rails gem,它是gem yell的包装。

它非常容易安装并完成工作:

  1. 添加gem 'yell-rails'到Gemfile
  2. 跑: rails generate yell: install
  3. 在文件中设置配置 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,然后在应用程序中仅允许一个记录器。

应用程序引导时,记录器设置有ActiveSupport :: TaggedLogging实例,该实例是ActiveSupport :: BufferedLogger的包装,最后一个使用std-lib的ruby Logger

要将日志发送到控制台,它使用中间件:Rails :: Rack :: LogTailer

此时,您可以打开所有这些类(TaggedLogging,BufferedLogger,Logger)并编写一些代码以使其按预期运行,从而获得成就,或者可以用Rails提供的工具替换记录器。

滑轨4

不再使用BufferedLogger,并且使用ActiveSupport :: Logger <Logger代替Logger Rails。它包括一个广播的类方法,该方法允许增加记录器。此方法也用于将日志发送到控制台

我试用了这些设置,并放入了一个初始化程序,将其作为让您实现目标的起点:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用某些列的某些子级别拆分数据帧并在 tidyverse 中应用模型

来自分类Dev

如何在JHipster中更改休眠日志记录级别?

来自分类Dev

如何在流明中配置日志记录级别

来自分类Dev

如何在Elasticsearch中设置日志记录级别?

来自分类Dev

如何在流明中配置日志记录级别

来自分类Dev

如何在运行时更改语义日志记录中的日志级别?

来自分类Dev

如何在Gradle中配置日志级别?

来自分类Dev

如何在Gradle中配置日志级别?

来自分类Dev

自定义记录器如何仅在较低级别的日志记录到stdout时才将错误/严重记录到stderr?

来自分类Dev

如何在关键级别记录事件日志?

来自分类Dev

如何在python日志记录模块中指定级别?

来自分类Dev

如何在Spring Boot中设置嵌入式tomcat的日志记录级别?

来自分类Dev

如何在自定义级别向模块中的类添加日志记录

来自分类Dev

如何在Python的单元测试中设置日志记录级别

来自分类Dev

如何在日志中隐藏日志级别和时间

来自分类Dev

如何更改Hibernate4中的日志记录级别?

来自分类Dev

对于某些满足条件的组,如何在R中绘制图?

来自分类Dev

Serilog:如何不记录某些请求(或记录不同级别的记录)

来自分类Dev

设置日志记录级别

来自分类Dev

如何设置HikariCP的日志记录级别?

来自分类Dev

如何更改SpringMVC日志记录级别?

来自分类Dev

SFTP中的活动日志记录级别

来自分类Dev

在python中配置日志记录级别

来自分类Dev

在单词的轮廓中显示某些级别

来自分类Dev

如何在Lua脚本中检查Redis中的日志级别

来自分类Dev

如何在Grails 4中设置日志级别

来自分类Dev

如何在不同的 Java 类中设置单独的日志级别?

来自分类Dev

我如何在python中收集警告级别的日志?

来自分类Dev

使用Poco库,如何在分离器通道记录器中为每个通道设置不同的日志级别?

Related 相关文章

  1. 1

    如何使用某些列的某些子级别拆分数据帧并在 tidyverse 中应用模型

  2. 2

    如何在JHipster中更改休眠日志记录级别?

  3. 3

    如何在流明中配置日志记录级别

  4. 4

    如何在Elasticsearch中设置日志记录级别?

  5. 5

    如何在流明中配置日志记录级别

  6. 6

    如何在运行时更改语义日志记录中的日志级别?

  7. 7

    如何在Gradle中配置日志级别?

  8. 8

    如何在Gradle中配置日志级别?

  9. 9

    自定义记录器如何仅在较低级别的日志记录到stdout时才将错误/严重记录到stderr?

  10. 10

    如何在关键级别记录事件日志?

  11. 11

    如何在python日志记录模块中指定级别?

  12. 12

    如何在Spring Boot中设置嵌入式tomcat的日志记录级别?

  13. 13

    如何在自定义级别向模块中的类添加日志记录

  14. 14

    如何在Python的单元测试中设置日志记录级别

  15. 15

    如何在日志中隐藏日志级别和时间

  16. 16

    如何更改Hibernate4中的日志记录级别?

  17. 17

    对于某些满足条件的组,如何在R中绘制图?

  18. 18

    Serilog:如何不记录某些请求(或记录不同级别的记录)

  19. 19

    设置日志记录级别

  20. 20

    如何设置HikariCP的日志记录级别?

  21. 21

    如何更改SpringMVC日志记录级别?

  22. 22

    SFTP中的活动日志记录级别

  23. 23

    在python中配置日志记录级别

  24. 24

    在单词的轮廓中显示某些级别

  25. 25

    如何在Lua脚本中检查Redis中的日志级别

  26. 26

    如何在Grails 4中设置日志级别

  27. 27

    如何在不同的 Java 类中设置单独的日志级别?

  28. 28

    我如何在python中收集警告级别的日志?

  29. 29

    使用Poco库,如何在分离器通道记录器中为每个通道设置不同的日志级别?

热门标签

归档