Method: DangoLogger#initialize

Defined in:
lib/dango/dango_logger.rb

#initialize(log_file, log_shift_age, log_max_size, log_level) ⇒ DangoLogger

Returns a new instance of DangoLogger.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/dango/dango_logger.rb', line 31

def initialize(log_file, log_shift_age, log_max_size, log_level)
  @log_file = log_file
  @log_shift_age = log_shift_age
  @log_max_size = log_max_size
  @log_level = log_level
  
  if @log_file && @log_file != "" # 出力ファイルが空なら何もしない
    @is_logging = true 
  else
    @is_logging = false
  end
  
  if @is_logging
    log_dir = File.dirname(@log_file)
    Dir.mkdir(log_dir) if !File.exist?(log_dir)
    @dango_logger = Logger.new(@log_file, @log_shift_age, @log_max_size)
    @dango_logger.level = @log_level
    def @dango_logger.format_message(severity, timestamp, msg, progname) 
      now = Time.now
      now_str = now.strftime("%Y-%m-%d %H:%M:%S.") << "%06d" % now.usec
      "%1.1s, [%s] %s:%s\n" % [severity, now_str, msg, 
                                  progname]
    end
    @dango_logger.add(1, "--- start log ---", "logger")
    
    @log_queue = Queue.new
    
    Thread.start do 
      # logger作成
      loop do
        begin
          data = @log_queue.pop
          @dango_logger.add(data[:sev], data[:msg], data[:prg])
        rescue Exception
          puts "dango_logger:#{error_message($!, 'u')}"
          open("dango_logger.log", "ab"){|fh| fh.puts "#{Time.now_to_s}:#{error_message($!, 'u')}"}
          exit! # ログのトラブルが出た場合は強制終了
        end
      end
    end # Thread.end
  end
end