3

我想要一个输出格式,如:

/some/path/to/the/source/file(999) :要记录的消息

4

2 回答 2

7

此解决方案依赖于内部 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
于 2013-04-06T15:14:53.983 回答
0

__FILE__ 和 __LINE__ 是一种动态常量,用于保存当前正在执行的文件和行。

class_eval <<-"end_eval", __FILE__, __LINE__ 在 Ruby 中是什么意思?

于 2013-04-06T18:26:44.763 回答