mose/zabbix-ruby-client

View on GitHub
lib/zabbix-ruby-client/logger.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "logger"

module ZabbixRubyClient
  module Log
    extend self

    def set_logger(logfile, level="info")
      if logfile.is_a?(String) && !Dir.exists?(File.dirname(logfile))
        FileUtils.mkdir_p(File.dirname(logfile))
      end
      @logger = ::Logger.new(logfile)
      @logger.level = get_level_constant(level)
      @logger.formatter = proc do |severity, datetime, progname, msg|
        "[#{datetime.utc}] #{severity}: #{msg}\n"
      end
    end

    def logger
      @logger ||= ::Logger.new(STDOUT)
    end

    def debug(msg)
      logger.debug(msg)
    end

    def info(msg)
      logger.info(msg)
    end

    def warn(msg)
      logger.warn(msg)
    end

    def error(msg)
      logger.error(msg)
    end

    def fatal(msg)
      logger.fatal(msg)
    end

    def get_level_constant(level)
      if level
        begin
          ::Logger.const_get(level.to_s.upcase)
        rescue NameError
          return ::Logger::INFO
        end
      else
        ::Logger::INFO
      end
    end

  end
end