Class: Yell::Logger

Inherits:
Object
  • Object
show all
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
  level :warn
end

Combined settings

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

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

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ Logger

Returns a new instance of Logger.



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

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

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

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

  # 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

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

  # eval the given block
  instance_eval( &block ) if block

  define!
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:



78
79
80
81
82
83
84
# File 'lib/yell/logger.rb', line 78

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

#close(now = false) ⇒ Object

Convenience method for resetting all adapters of the Logger.

Parameters:

  • now (Boolean) (defaults to: false)

    Perform the reset immediately (default false)



99
100
101
# File 'lib/yell/logger.rb', line 99

def close( now = false )
  @adapters.each(&:close)
end

#level(val = nil) ⇒ Object

Set the minimum log level.

Examples:

Set the level to :warn

level :warn

Parameters:

  • val (String, Symbol, Integer) (defaults to: nil)

    The minimum log level



92
93
94
# File 'lib/yell/logger.rb', line 92

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