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
# 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')}"
          exit! # ログのトラブルが出た場合は強制終了
        end
      end
    end # Thread.end
  end
end

Instance Method Details

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



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

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

#debug(msg = "") ⇒ Object



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

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

#error(msg = "") ⇒ Object



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

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

#fatal(msg = "") ⇒ Object



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

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

#info(msg = "") ⇒ Object



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

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

#unknown(msg = "") ⇒ Object



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

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

#warn(msg = "") ⇒ Object



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

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