Module: VagrantCloud::Logger

Included in:
Client, Instrumentor::Logger
Defined in:
lib/vagrant_cloud/logger.rb

Constant Summary collapse

@@lock =
Mutex.new

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.defaultLog4r::Logger

Returns default logger.

Returns:

  • (Log4r::Logger)

    default logger



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
# File 'lib/vagrant_cloud/logger.rb', line 7

def self.default
  @@lock.synchronize do
    if !@logger
      # Require Log4r and define the levels we'll be using
      require 'log4r/config'
      Log4r.define_levels(*Log4r::Log4rConfig::LogLevels)

      level = nil
      begin
        level = Log4r.const_get(ENV.fetch("VAGRANT_CLOUD_LOG", "FATAL").upcase)
      rescue NameError
        # This means that the logging constant wasn't found,
        # which is fine. We just keep `level` as `nil`. But
        # we tell the user.
        level = nil
      end

      # Some constants, such as "true" resolve to booleans, so the
      # above error checking doesn't catch it. This will check to make
      # sure that the log level is an integer, as Log4r requires.
      level = nil if !level.is_a?(Integer)

      # Only override the log output format if the default is set
      if Log4r::Outputter.stderr.formatter.is_a?(Log4r::DefaultFormatter)
        base_formatter = Log4r::PatternFormatter.new(
          pattern: "%d [%5l] %m",
          date_pattern: "%F %T"
        )
        Log4r::Outputter.stderr.formatter = base_formatter
      end

      logger = Log4r::Logger.new("vagrantcloud")
      logger.outputters = Log4r::Outputter.stderr
      logger.level = level
      @logger = logger
    end
  end
  @logger
end

.included(klass) ⇒ Object



47
48
49
50
# File 'lib/vagrant_cloud/logger.rb', line 47

def self.included(klass)
  klass.class_variable_set(:@@logger, Log4r::Logger.new(klass.name.downcase))
  klass.class_eval { define_method(:logger) { self.class.class_variable_get(:@@logger) } }
end

Instance Method Details

#loggerLog4r::Logger

Returns logger instance for current context.

Returns:

  • (Log4r::Logger)

    logger instance for current context



53
54
55
56
57
58
59
60
# File 'lib/vagrant_cloud/logger.rb', line 53

def logger
  @@lock.synchronize do
    if !@logger
      @logger = Log4r::Logger.new(self.class.name.downcase)
    end
    @logger
  end
end