File: logging.rb

package info (click to toggle)
ruby-influxdb 0.8.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 424 kB
  • sloc: ruby: 3,530; sh: 61; makefile: 7
file content (46 lines) | stat: -rw-r--r-- 1,089 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
require 'logger'

module InfluxDB
  module Logging # :nodoc:
    PREFIX = "InfluxDB".freeze

    class << self
      attr_writer :logger
      attr_writer :log_level

      def logger
        return false if @logger == false

        @logger ||= ::Logger.new(STDERR).tap { |logger| logger.level = Logger::INFO }
      end

      def log_level
        @log_level || Logger::INFO
      end

      def log?(level)
        case level
        when :debug then log_level <= Logger::DEBUG
        when :info  then log_level <= Logger::INFO
        when :warn  then log_level <= Logger::WARN
        when :error then log_level <= Logger::ERROR
        when :fatal then log_level <= Logger::FATAL
        else true
        end
      end
    end

    private

    def log(level, message = nil, &block)
      return unless InfluxDB::Logging.logger
      return unless InfluxDB::Logging.log?(level)

      if block_given?
        InfluxDB::Logging.logger.send(level.to_sym, PREFIX, &block)
      else
        InfluxDB::Logging.logger.send(level.to_sym, PREFIX) { message }
      end
    end
  end
end