Module: Log2Json

Defined in:
lib/log2json/railslogger.rb

Constant Summary collapse

LEVELS =
{
  :debug => Logger::DEBUG,
  :info => Logger::INFO,
  :warn => Logger::WARN,
  :error => Logger::ERROR,
  :fatal => Logger::FATAL,
  :unknown => 5
}

Class Method Summary collapse

Class Method Details

.create_custom_rails_logger(config) ⇒ Object

Create a custom logger that uses its own formatting for easier parsing by a log2json log monitoring script.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/log2json/railslogger.rb', line 38

def self.create_custom_rails_logger(config)
  if config.respond_to?(:paths)  # assume rails 3
    path = config.paths["log"].first
    unless File.exist? File.dirname path
      FileUtils.mkdir_p File.dirname path
    end
    config.colorize_logging = false
  else                           # assume rails 2
    path = config.log_path
    config.active_record.colorize_logging = false 
  end
  logger = ::Logger.new(path)
  logger.level =  LEVELS[config.log_level]
  logger.formatter = ::Log2Json::log_formatter
  if defined?(ActiveSupport::TaggedLogging)
    ActiveSupport::TaggedLogging.new(logger)
  else
    logger
  end
end

.create_custom_unicorn_logger(config) ⇒ Object

Simiar to the custom rails logger, but for unicorn.



61
62
63
64
65
66
# File 'lib/log2json/railslogger.rb', line 61

def self.create_custom_unicorn_logger(config)
  logger = ::Logger.new(config.set[:stderr_path])
  logger.level = Logger::INFO
  logger.formatter = ::Log2Json::log_formatter
  logger
end

.log_formatterObject



28
29
30
31
32
33
# File 'lib/log2json/railslogger.rb', line 28

def self.log_formatter
  proc do |severity, datetime, progname, msg|
    "#{datetime.strftime('%Y-%m-%dT%H:%M:%S%z')}: [#{severity}] #{$$} #{msg.gsub(/\n/, '#012')}\n"
    # Note: Following rsyslog's convention, all newlines are converted to '#012'.
  end
end