我想要输出格式如下:
/some/path/to/the/source/file(999):要记录的消息
最佳答案
此解决方案依赖于内部记录器调用链结构。所以最好是由伐木者自己支撑,这样它就不会那么脆弱了。
require 'logger'
...
module MyModule
@@_logger_ = Logger.new(STDOUT);
def self.log
@@_logger_
end
def log
@@_logger_
end
@@_logger_.formatter = proc do |severity, datetime, progname, msg|
fileLine = "";
caller.each do |clr|
unless(/\/logger.rb:/ =~ clr)
fileLine = clr;
break;
end
end
fileLine = fileLine.split(':in `',2)[0];
fileLine.sub!(/:(\d)/, '(\1');
"#{fileLine}) : #{msg}\n"
end