我需要添加一个像“verbose”或“traffic”的自定义日志级别给ruby记录器,该怎么办?如何将自定义日志级别添加到红宝石记录器中?
9
A
回答
0
您可以通过重载Logger class
3
日志级别创建自己的记录器在logger.rb
定义无非是整型常量:
# Logging severity.
module Severity
DEBUG = 0
INFO = 1
WARN = 2
ERROR = 3
FATAL = 4
UNKNOWN = 5
end
您可以与任何级别的日志消息像使用Logger#add
方法:
l.add 6, 'asd'
#=> A, [2010-02-17T16:25:47.763708 #14962] ANY -- : asd
3
您自己的记录器只需要覆盖Logger#format_severity
的方法,像这样:
class MyLogger < Logger
SEVS = %w(DEBUG INFO WARN ERROR FATAL VERBOSE TRAFFIC)
def format_severity(severity)
SEVS[severity] || 'ANY'
end
def verbose(progname = nil, &block)
add(5, nil, progname, &block)
end
end
+0
IMO,这是一个更好的答案,因为它避免了Ruby核心的猴子补丁。 + – sethvargo 2014-08-22 17:55:44
4
您可以简单地添加到Logger类:
require 'logger'
class Logger
def self.custom_level(tag)
SEV_LABEL << tag
idx = SEV_LABEL.size - 1
define_method(tag.downcase.gsub(/\W+/, '_').to_sym) do |progname, &block|
add(idx, nil, progname, &block)
end
end
# now add levels like this:
custom_level 'TRAFFIC'
custom_level 'ANOTHER-TAG'
end
# using it:
log = Logger.new($stdout)
log.traffic('testing')
log.another_tag('another message here.')
2
如果你开始需要一堆定制的东西,它可能是值得一试log4r,这是一个灵活的日志记录库,可以让你轻松地做一堆有趣/有用的东西。
0
这是一个古老的问题,但由于它在谷歌上出现如此之高,我认为有必要更正答案。您实际上可以使用Logging.init
方法。这里是你将如何这是通过使用logging
宝石的2.0.0
添加trace
日志级别
require 'logging'
Logging.init %w(trace debug info warn error fatal)
Logging.logger.root.level = :trace
Logging.logger.root.add_appenders Logging.appenders.stdout
Logging.logger['hello'].trace 'TEST'
。
相关问题
- 1. 谷歌日志记录中的自定义日志级别
- 2. ZF2日志记录:将自定义信息添加到日志记录输出
- 3. 自定义as_json红宝石
- 4. 如何在Python中的自定义logging.Handler中获取日志记录的级别?
- 5. Selenium日志如何访问红宝石?
- 6. Android日志记录级别
- 7. 红宝石有日志查看器吗?
- 8. JavaScript日志记录库(日志级别)
- 9. Java日志记录 - 如何将输出重定向到记录器的自定义日志文件?
- 10. 如何从红宝石2.2.3升级到红宝石2.3.0
- 11. log4net:自定义日志级别
- 12. logback自定义日志级别处理
- 13. 如何在Tomcat中将级别日志记录设置为DEBUG?
- 14. 调整apache公共日志记录的日志记录级别?
- 15. 基于日志记录级别的SpringBoot日志记录配置
- 16. 红宝石添加日历月
- 17. Glassfish记录到一个空记录器 - 如何设置日志级别呢?
- 18. 将自定义函数输出添加到Python日志记录处理程序
- 19. 如何将日志行包装在GWT自定义日志记录区域中?
- 20. 添加自定义列红宝石收集
- 21. 红宝石:添加自定义属性内置类
- 22. Netsuite - 将动态记录数添加到自定义记录中?
- 23. 升级红宝石如何到
- 24. 如何在Log4net中配置日志级别低于根级别的子级日志记录器
- 25. 添加自定义处理程序与Python日志记录
- 26. 如何将宝石添加到Logstash中
- 27. 我可以禁用红宝石记录器的日志标头吗?
- 28. 我会如何编写自己的日志记录级别
- 29. 如何将log4php配置为将不同日志级别记录到同一记录器的不同文件中
- 30. Python的记录器。不记录自定义日志项
有没有简单的方法,没有写很多代码? – turri 2010-02-17 14:56:38
@turri不是我所知道的。它看起来像(Logger :: INFO等)中的级别非常多。也许还有另一种方式,但现在我想不出来 – marcgg 2010-02-17 15:18:59