Answers:
如果在ActiveSupport中查看BufferedLogger类的源代码,您会看到第二个参数是'progname'。仅当第一个参数为nil并且您没有给它任何块或该块返回非真值时才使用此参数。
本质上,您不能使用第二个参数来输出其他内容。
您想要做的事情更类似于:
begin
raise
rescue => e
logger.error e.message
logger.error e.backtrace.join("\n")
end
根据您的日志记录设置方式,最好遍历回溯的每一行并分别打印出来,因为某些日志记录器不会输出换行符,在这种情况下,您可以执行以下操作:
begin
raise
rescue => e
logger.error e.message
e.backtrace.each { |line| logger.error line }
end
$/
跨平台兼容吗?让Ruby来处理它,因为\r\n
它仅针对少数平台。