Class: Yell::Logger

Inherits:
Object
  • Object
show all
Includes:
Yell::Level::Helpers
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.

Examples:

A standard file logger

Yell::Logger.new
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

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ Logger

Returns a new instance of Logger.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/yell/logger.rb', line 34

def initialize( *args, &block )
  @adapters = []

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

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

  # set the log level when given
  self.level = @options[:level]

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

  # eval the given block
  block.call(self) if block
  # _call( &block ) if block

  # default adapter when none defined
  adapter :file if @adapters.empty?
end

Instance Method Details

#adapter(type = :file, *args, &block) ⇒ Object

Define an adapter to be used for logging.

Examples:

Standard adapter

adapter :file

Standard adapter with filename

adapter :file, 'development.log'

# Alternative notation for filename in options
adapter :file, :filename => 'developent.log'

Standard adapter with filename and additional options

adapter :file, 'development.log', :level => :warn

Set the adapter directly from an adapter instance

adapter( Yell::Adapter::File.new )

Parameters:

  • type (Symbol) (defaults to: :file)

    The type of the adapter, may be ‘:file` or `:datefile` (default `:file`)

Returns:

  • A new Yell::Adapter instance

Raises:



81
82
83
84
85
86
87
# File 'lib/yell/logger.rb', line 81

def adapter( type = :file, *args, &block )
  options = [@options, *args].inject( Hash.new ) do |h,c| 
    h.merge( c.is_a?(String) ? {:filename => c} : c  )
  end

  @adapters << Yell::Adapters.new( type, options, &block )
end

#closeObject

Convenience method for resetting all adapters of the Logger.

Parameters:

  • now (Boolean)

    Perform the reset immediately (default false)



107
108
109
# File 'lib/yell/logger.rb', line 107

def close
  @adapters.each(&:close)
end

#level(val = nil) ⇒ Object

Deprecated: Use attr_reader in future



90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/yell/logger.rb', line 90

def level( val = nil )
  if val.nil?
    @level
  else
    # deprecated, but should still work
    Yell._deprecate( "0.5.0", "Use :level= for setting the log level",
      :before => "Yell::Logger.new { level :info }",
      :after  => "Yell::Logger.new { |l| l.level = :info }"
    )

    @level = Yell::Level.new( val )
  end
end