使用Ruby的Logger有错误转到标准错误,但其他消息转到文件/ stdou
发布时间:2020-12-17 02:28:25 所属栏目:百科 来源:网络整理
导读:我想在命令行应用程序中使用 Ruby的记录器;它击败了put并具有良好的记录事物的灵活性. 我想要的一件事是能够将错误/致命消息转发到标准错误(按照惯例)以及记录器的消息配置去的地方. logger = Logger.new(some_file)logger.debug("This goes to some_file,if
我想在命令行应用程序中使用
Ruby的记录器;它击败了put并具有良好的记录事物的灵活性.
我想要的一件事是能够将错误/致命消息转发到标准错误(按照惯例)以及记录器的消息配置去的地方. logger = Logger.new(some_file) logger.debug("This goes to some_file,if debug is set") logger.info("This goes to some_file,if info is set") logger.error("This goes to some_file,AND stderr") 我这样做的一种方法是破解格式化程序: logger.formatter = Proc.new do |severity,time,progname,msg| message = format_message(severity,msg) if severity == ERROR $stderr.puts message end message end 这看起来很丑陋.另一种方法可能是创建一个Logger,代理其对底层实际记录器的调用,但拦截错误消息. 任何人都这样做了,有没有可能做到这一点的东西? 解决方法
Ruby非常酷,灵活,功能强大.只是通过这些猴子修补的东西和能力来打开一个类并添加方法,很容易忘记普通的旧继承…… class CopyLogger < Logger def error message # Print to standard error... $stderr.puts message # ...*and* to wherever you specified as well super message end end logger = CopyLogger.new(some_file) # ... 您可以将其他参数放入新类的构造函数中,例如所需的tee消息的严重性等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |