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
108
# 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
      max_backup_index = opts[:backups] || LOGFILE_DEFAULT_MAX_BACKUP_INDEX
      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', 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', 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



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

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



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

def self.logger; @@logger ; end

.swap(logger) ⇒ Object

for tests



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

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



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

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



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

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



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

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



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

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



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

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



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

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