Class: DangoLogger

Inherits:
Object show all
Includes:
ErrorMessage
Defined in:
lib/dango/dango_logger.rb

Overview

Dango用のロガークラス

Instance Method Summary collapse

Methods included from ErrorMessage

#error_message

Constructor Details

#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

Instance Method Details

#add(sev, msg = "") ⇒ Object



110
111
112
113
114
# File 'lib/dango/dango_logger.rb', line 110

def add(sev, msg = "")
  if @is_logging
    @log_queue.push({:sev=>sev, :msg=>str, :prg=>Thread.current.object_id})
  end
end

#debug(msg = "") ⇒ Object



74
75
76
77
78
# File 'lib/dango/dango_logger.rb', line 74

def debug(msg = "")
  if @is_logging
    @log_queue.push({:sev=>0, :msg=>msg, :prg=>Thread.current.object_id})
  end
end

#error(msg = "") ⇒ Object



92
93
94
95
96
# File 'lib/dango/dango_logger.rb', line 92

def error(msg = "")
  if @is_logging
    @log_queue.push({:sev=>3, :msg=>msg, :prg=>Thread.current.object_id})
  end
end

#fatal(msg = "") ⇒ Object



98
99
100
101
102
# File 'lib/dango/dango_logger.rb', line 98

def fatal(msg = "")
  if @is_logging
    @log_queue.push({:sev=>4, :msg=>msg, :prg=>Thread.current.object_id})
  end
end

#info(msg = "") ⇒ Object



80
81
82
83
84
# File 'lib/dango/dango_logger.rb', line 80

def info(msg = "")
  if @is_logging
    @log_queue.push({:sev=>1, :msg=>msg, :prg=>Thread.current.object_id})
  end
end

#unknown(msg = "") ⇒ Object



104
105
106
107
108
# File 'lib/dango/dango_logger.rb', line 104

def unknown(msg = "")
  if @is_logging
    @log_queue.push({:sev=>5, :msg=>msg, :prg=>Thread.current.object_id})
  end
end

#warn(msg = "") ⇒ Object



86
87
88
89
90
# File 'lib/dango/dango_logger.rb', line 86

def warn(msg = "")
  if @is_logging
    @log_queue.push({:sev=>2, :msg=>msg, :prg=>Thread.current.object_id})
  end
end