Sha256: bf9bb4387fbad742d6c80ffa937ceb3ab6dc7859a09493213d634ff8a3e4160c

Contents?: true

Size: 1.41 KB

Versions: 6

Compression:

Stored size: 1.41 KB

Contents

require 'syslog/logger'
require 'json'

module TangaServices
  # Logs json to syslog.
  # Automatically delegates stuff to the syslog logger.
  # Use like:
  #    TangaServices.logger.open('my_application_name')
  #    TangaServices.logger.info({message: "I'm interesting data"})
  #    TangaServices.logger.error({message: "i crashed"})
  class Logger < Syslog::Logger
    def self.application_name=(application_name)
      @application_name = application_name
    end

    def self.logger
      @logger || Syslog::Logger.new((@application_name || 'unknown'), Syslog::LOG_LOCAL7)
    end

    def self.debug(hash)
      log(:debug, hash)
    end

    def self.info(hash)
      log(:info, hash)
    end

    def self.write(message)
      log(:info, message: message)
    end
    class << self
      alias :<< :write
    end

    def self.warn(hash)
      log(:warn, hash)
    end

    def self.error(hash)
      log(:error, hash)
    end

    def self.fatal(hash)
      log(:fatal, hash)
    end

    def self.log(level, hash)
      unless hash.is_a?(Hash)
        hash = { object: hash }
      end

      fail ArgumentError, 'we just log hashes' unless hash.is_a?(Hash)
      data = { level: level, object: hash }
      logger.send(level, data.to_json)
    end

    def self.method_missing(method, *args, &block)
      logger.send(method, *args, &block)
    end
  end

  # Convience access to logger
  def self.logger
    Logger
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
tanga_services-0.0.14 lib/tanga_services/logger.rb
tanga_services-0.0.13 lib/tanga_services/logger.rb
tanga_services-0.0.12 lib/tanga_services/logger.rb
tanga_services-0.0.11 lib/tanga_services/logger.rb
tanga_services-0.0.10 lib/tanga_services/logger.rb
tanga_services-0.0.9 lib/tanga_services/logger.rb