Class: Yell::Logger

Inherits:
Object
  • Object
show all
Includes:
Helpers::Adapter, Helpers::Base, Helpers::Formatter, Helpers::Level, Helpers::Silencer, Helpers::Tracer
Defined in:
lib/yell/logger.rb

Overview

The Yell::Logger is your entrypoint. Anything onwards is derived from here.

A Yell::Logger instance holds all your adapters and sends the log events to them if applicable. There are multiple ways of how to create a new logger.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers::Silencer

#silence, #silencer

Methods included from Helpers::Tracer

#trace, #trace=

Methods included from Helpers::Adapter

#_adapter, #adapter

Methods included from Helpers::Formatter

#format, #format=

Methods included from Helpers::Level

#level, #level=

Constructor Details

#initialize(*args, &block) ⇒ Logger

Initialize a new Logger

Examples:

A standard file logger

Yell::Logger.new 'development.log'

A standard datefile logger

Yell::Logger.new :datefile
Yell::Logger.new :datefile, 'development.log'

Setting the log level

Yell::Logger.new :level => :warn

Yell::Logger.new do |l|
  l.level = :warn
end

Combined settings

Yell::Logger.new 'development.log', :level => :warn

Yell::Logger.new :datefile, 'development.log' do |l|
  l.level = :info
end


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/yell/logger.rb', line 70

def initialize( *args, &block )
  reset!

  # extract options
  @options = args.last.is_a?(Hash) ? args.pop : {}

  # adapters may be passed in the options
  extract!(*@options[:adapters]) if @options.key?(:adapters)

  # check if filename was given as argument and put it into the @options
  if [String, Pathname].include?(args.last.class)
    @options[:filename] = args.pop unless @options[:filename]
  end

  self.level = @options.fetch(:level, 0) # debug by default
  self.name = @options.fetch(:name, nil) # no name by default
  self.trace = @options.fetch(:trace, :error) # trace from :error level onwards

  # silencer
  self.silence(*@options[:silence])

  # extract adapter
  self.adapter(args.pop) if args.any?

  # eval the given block
  block.arity > 0 ? block.call(self) : instance_eval(&block) if block_given?

  # default adapter when none defined
  self.adapter(:file) if _adapter.nil?
end

Instance Attribute Details

#nameObject

The name of the logger instance



46
47
48
# File 'lib/yell/logger.rb', line 46

def name
  @name
end

Instance Method Details

#closeObject



145
146
147
# File 'lib/yell/logger.rb', line 145

def close
  _adapter.close
end

#inspectObject

Get a pretty string representation of the logger.



139
140
141
142
# File 'lib/yell/logger.rb', line 139

def inspect
  inspection = inspectables.map { |m| "#{m}: #{send(m).inspect}" }
  "#<#{self.class.name} #{inspection * ', '}>"
end