我想要一个输出格式,如:
/some/path/to/the/source/file(999) :要记录的消息
此解决方案依赖于内部 Logger 调用链结构。因此,由 Logger 本身支持这一点会很好,这样它就不那么脆弱了。
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
__FILE__ 和 __LINE__ 是一种动态常量,用于保存当前正在执行的文件和行。