Module: Norikra::Log

Defined in:
lib/norikra/logger.rb

Constant Summary collapse

@@logger =
nil
@@devmode =
false
@@test_flag =
false
@@mon =
Monitor.new

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.init(level, logdir, opts, devmode = false) ⇒ Object

Raises:

  • (::ArgumentError)


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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/norikra/logger.rb', line 46

def self.init(level, logdir, opts, devmode=false)
  level ||= LOG_LEVEL_DEFAULT
  # logdir: nil => ConsoleAppender
  #         else => RollingFileAppender (output: directory path)
  # http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/RollingFileAppender.html

  if level.upcase == 'TEST' # with opts[:logger] as DummyLogger instance
    level = opts[:level] || LOG_LEVEL_DEFAULT
    @@test_flag = true
  end

  level = level.upcase
  raise ::ArgumentError, "unknown log level: #{level}" unless LOG_LEVELS.include?(level)

  p = java.util.Properties.new
  p.setProperty('log4j.appender.default.layout', 'org.apache.log4j.PatternLayout')
  p.setProperty('log4j.appender.default.layout.ConversionPattern', LOG_LOG4J_FORMAT)

  # for esper epl & mizuno jetty
  esper_log_limit = 'WARN'
  p.setProperty('log4j.logger.com.espertech.esper', "#{esper_log_limit}, builtin")
  mizuno_log_limit = 'WARN'
  p.setProperty('log4j.logger.ruby', "#{mizuno_log_limit}, builtin")
  p.setProperty('log4j.logger.org.eclipse.jetty', "#{mizuno_log_limit}, builtin")

  p.setProperty('log4j.appender.builtin.layout', 'org.apache.log4j.PatternLayout')
  p.setProperty('log4j.appender.builtin.layout.ConversionPattern', LOG_LOG4J_BUILTIN_FORMAT)

  unless @@test_flag
    if logdir.nil?
      p.setProperty('log4j.appender.default', 'org.apache.log4j.ConsoleAppender')
      p.setProperty('log4j.appender.builtin', 'org.apache.log4j.ConsoleAppender')
    else
      # DailyRollingFileAppender ?
      # http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html
      norikra_log = File.join(logdir, 'norikra.log')
      p.setProperty('log4j.appender.default', 'org.apache.log4j.RollingFileAppender')
      p.setProperty('log4j.appender.default.File', norikra_log)
      p.setProperty('log4j.appender.default.MaxFileSize', opts[:filesize] || LOGFILE_DEFAULT_MAX_SIZE)
      p.setProperty('log4j.appender.default.MaxBackupIndex', opts[:backups].to_s || LOGFILE_DEFAULT_MAX_BACKUP_INDEX.to_s)

      builtin_log = File.join(logdir, 'builtin.log')
      p.setProperty('log4j.appender.builtin', 'org.apache.log4j.RollingFileAppender')
      p.setProperty('log4j.appender.builtin.File', builtin_log)
      p.setProperty('log4j.appender.builtin.MaxFileSize', opts[:filesize] || LOGFILE_DEFAULT_MAX_SIZE)
      p.setProperty('log4j.appender.builtin.MaxBackupIndex', opts[:backups].to_s || LOGFILE_DEFAULT_MAX_BACKUP_INDEX.to_s)
    end
    p.setProperty('log4j.rootLogger', "#{level},default")
    org.apache.log4j.PropertyConfigurator.configure(p)

    @@logger = Logger.new('norikra.log', opts)

  else # for test(rspec)
    p.setProperty('log4j.appender.default', 'org.apache.log4j.varia.NullAppender')
    p.setProperty('log4j.appender.builtin', 'org.apache.log4j.varia.NullAppender')
    p.setProperty('log4j.rootLogger', "#{level},default")
    org.apache.log4j.PropertyConfigurator.configure(p)
    @@logger = opts[:logger]
  end

  @@devmode = devmode
end

.init_with_log4j_properties_path(log4j_properties_path) ⇒ Object



109
110
111
112
113
# File 'lib/norikra/logger.rb', line 109

def self.init_with_log4j_properties_path(log4j_properties_path)
  org.apache.log4j.PropertyConfigurator.configure(log4j_properties_path)
  @@logger = Logger.new('norikra.log')
  @@devmode = false
end

.loggerObject



123
# File 'lib/norikra/logger.rb', line 123

def self.logger; @@logger ; end

.swap(logger) ⇒ Object

for tests



115
116
117
118
119
120
121
# File 'lib/norikra/logger.rb', line 115

def self.swap(logger) # for tests
  @@mon.synchronize do
    original,@@logger = @@logger, logger
    yield
    @@logger = original
  end
end

Instance Method Details

#debug(message, data = nil, &block) ⇒ Object



132
133
134
135
136
137
# File 'lib/norikra/logger.rb', line 132

def debug(message, data=nil, &block)
  return unless @@logger.enabled?(LEVEL_DEBUG)
  data ||= block
  from = @@devmode ? caller_locations(1,1) : nil
  @@logger.debug(message, data, from)
end

#error(message, data = nil, &block) ⇒ Object



153
154
155
156
157
158
# File 'lib/norikra/logger.rb', line 153

def error(message, data=nil, &block)
  return unless @@logger.enabled?(LEVEL_ERROR)
  data ||= block
  from = @@devmode ? caller_locations(1,1) : nil
  @@logger.error(message, data, from)
end

#fatal(message, data = nil, &block) ⇒ Object



160
161
162
163
164
165
# File 'lib/norikra/logger.rb', line 160

def fatal(message, data=nil, &block)
  # always enabled
  data ||= block
  from = @@devmode ? caller_locations(1,1) : nil
  @@logger.fatal(message, data, from)
end

#info(message, data = nil, &block) ⇒ Object



139
140
141
142
143
144
# File 'lib/norikra/logger.rb', line 139

def info(message, data=nil, &block)
  return unless @@logger.enabled?(LEVEL_INFO)
  data ||= block
  from = @@devmode ? caller_locations(1,1) : nil
  @@logger.info(message, data, from)
end

#trace(message, data = nil, &block) ⇒ Object



125
126
127
128
129
130
# File 'lib/norikra/logger.rb', line 125

def trace(message, data=nil, &block)
  return unless @@logger.enabled?(LEVEL_TRACE)
  data ||= block
  from = @@devmode ? caller_locations(1,1) : nil
  @@logger.trace(message, data, from)
end

#warn(message, data = nil, &block) ⇒ Object



146
147
148
149
150
151
# File 'lib/norikra/logger.rb', line 146

def warn(message, data=nil, &block)
  return unless @@logger.enabled?(LEVEL_WARN)
  data ||= block
  from = @@devmode ? caller_locations(1,1) : nil
  @@logger.warn(message, data, from)
end