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__ は、現在実行中のファイルと行を保持する一種の動的定数です。

Rubyでclass_eval <<-"end_eval", __FILE__, __LINE__とはどういう意味ですか?

于 2013-04-06T18:26:44.763 に答える