2

このスクリプトを使用している場合、正常に動作します

require 'logger'

class Logging < Logger
    log = Logger.new "sam.txt"
    log.warn "samarth"
end

ログファイルの出力はこのようになっています

# Logfile created on Thu Sep 20 12:01:26 +0530 2012 by /
W, [2012-09-20T12:01:44.402915 #7553]  WARN -- : asasa

今、ロガーを継承するクラスを作成したいのですが、そのスクリプトを他のすべてで使用していますが、いくつかの異なる出力を生成しています

require 'date'
require 'logger'

class Logging < Logger

    def initialize 
      @date = Time.now.strftime("20%y-%m-%d").to_s
      @time = Time.now.strftime("%X")
      @file_name = @date+"_"+@time+ " log.txt"
      @file_name_path = '/cmf/samnew/build/Logs/'+@file_name
    end

    def createfile
      $log1 = Logger.new(@file_name_path)
      return $log1 
    end

end

私は以下のスクリプトでこのスクリプトを実装しています

require '/cmf/samnew/build/Controller/logging'


class Controller

    #Generating log file

    log = Logging.new
    log1 =  log.createfile
    log1.warn "samarth global"

end

出力は次のようになります

# Logfile created on Thu Sep 20 12:03:20 +0530 2012 by /
samarth global

このコードの何が問題なのか、または上記のような出力を作成するにはどうすればよいですか

4

1 に答える 1

1

おそらく、ロードした gem の 1 つがグローバル フォーマット文字列を台無しにしています。

これを試して、希望のフォーマットを定義してください

def createfile 
  $log1 = Logger.new(@file_name_path) 
  $log1.formatter = proc do |severity, datetime, progname, msg| 
    "#{severity[0]}, [#{datetime} \##{$$}] #{severity} --> #{msg} \n"
  end
  $log1  
end 
于 2012-09-20T07:46:24.613 に答える