Sha256: 5c3e4b1ae870c9a14e745d661c417bae99b113135050107578acf5361d3700e5

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

require "bbc/cosmos/logger/version"

require 'log4r'
require 'log4r-gelf'

# Monkey Patch Log4r to allow us to use is as a Rack::CommonLogger
module Log4r
  class Logger
    def write(value); info(value) end
    def <<(value); info(value) end
  end
end

module BBC
  module Cosmos
    module Logger
      class SimpleFormatter <  Log4r::Formatter
        def format(event)
          "[#{Time.now}] #{event.name} #{Log4r::LNAMES[event.level]} #{event.data}\n"
        end
      end

      DEFAULT_LOG_LOCATION = 'debug.log'
      DEFAULT_MAX_BACKUPS  = 2
      DEFAULT_MAXTIME      = 600
      DEFAULT_GELF_SERVER  = 'localhost'
      DEFAULT_GELF_PORT    = '12201'

      def self.create(id)
        log = Log4r::Logger.new(id)

        Log4r::RollingFileOutputter.new(
          'logfile',
          :formatter   => SimpleFormatter,
          :filename    => ENV['APP_LOG_LOCATION'] || DEFAULT_LOG_LOCATION,
          :max_backups => ENV['LOG_MAX_BACKUPS']  || DEFAULT_MAX_BACKUPS,
          :maxtime     => ENV['LOG_MAXTIME']      || DEFAULT_MAXTIME,
          :trunc => true)

        Log4r::GelfOutputter.new(
          'gelfling',
          :formatter   => SimpleFormatter,
          'gelf_server' => ENV['GELF_SERVER'],
          'gelf_port'   => ENV['GELF_PORT'])

        log.tap {|l| l.add('logfile', 'gelfling') }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bbc-cosmos-logger-0.0.3 lib/bbc/cosmos/logger.rb