11

次のようなログ機能を実装したい:

def mylog(str)
   puts __FILE__, ":"__LINENO__, ":", str  # Here how to get __FILE__ and __LINENO__ is my question.
end

私が電話するときmylog

mylog 'hello' # say I call this in my.rb line 10

私は出力を期待しています:

my.rb:10:hello

関数の正しい実装を手伝ってくださいmylog

4

3 に答える 3

11

使用する必要がありますcaller

def mylog(str)
  caller_line = caller.first.split(":")[1]
  puts "#{__FILE__} : #{caller_line} : #{str}"  
end

おそらく、呼び出されたファイルも知りたいでしょうmylog...

def mylog(str)
  caller_infos = caller.first.split(":")
  puts "#{caller_infos[0]} : #{caller_infos[1]} : #{str}"  
end
于 2013-10-22T01:29:25.477 に答える
10

行番号を取得するための正しい変数は__LINE__であるため、関数の適切な実装は次のようになります

def mylog(str)
 puts "#{__FILE__}:#{__LINE__}:#{str}"  
end

出力があなたのものと一致するように編集

于 2013-10-22T01:27:09.120 に答える