Module: K8s::Logging

Extended by:
ModuleMethods
Included in:
Stack, Transport
Defined in:
lib/k8s/logging.rb

Overview

Logging utilities

This provides a per-class Logger that uses the class name as a logging prefix. Instances can optionally also use logger! to define a per-instance Logger using a custom prefix.

Defined Under Namespace

Modules: ClassMethods, ModuleMethods

Constant Summary collapse

LOG_TARGET =

Default log target

$stderr
LOG_LEVEL =

Default log level: show warnings.

Use K8s::Logging.quiet! to supress warnings. Note that the K8s::Transport defaults to quiet!

Logger::WARN

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ModuleMethods

debug!, log_level, log_level=, quiet!, verbose!

Class Method Details

.included(base) ⇒ Object

extend class/intance methods for per-class logger



63
64
65
66
# File 'lib/k8s/logging.rb', line 63

def self.included(base)
  base.extend(ModuleMethods) # per-class @log_level
  base.extend(ClassMethods)
end

Instance Method Details

#loggerLogger

Returns:

  • (Logger)


83
84
85
# File 'lib/k8s/logging.rb', line 83

def logger
  @logger || self.class.logger
end

#logger!(progname: self.class.name, target: LOG_TARGET, level: nil, debug: false) ⇒ Logger

Use per-instance logger instead of the default per-class logger

Sets the instance variable returned by #logger

Returns:

  • (Logger)


73
74
75
76
77
78
79
80
# File 'lib/k8s/logging.rb', line 73

def logger!(progname: self.class.name, target: LOG_TARGET, level: nil, debug: false)
  @logger = Logger.new(target).tap do |logger|
    level = Logger::DEBUG if debug

    logger.progname = "#{self.class.name}<#{progname}>"
    logger.level = level || self.class.log_level || K8s::Logging.log_level || LOG_LEVEL
  end
end