# File lib/yell/logger.rb, line 41
    def initialize( *args, &block )
      # extract options
      @options = args.last.is_a?(Hash) ? args.pop : {}

      # 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

      reset!

      # FIXME: :format is deprecated in future versions --R
      self.formatter = Yell.__fetch__(@options, :format, :formatter)
      self.level = Yell.__fetch__(@options, :level, :default => 0)
      self.name = Yell.__fetch__(@options, :name)
      self.trace = Yell.__fetch__(@options, :trace, :default => :error)

      # silencer
      self.silence(*Yell.__fetch__(@options, :silence, :default => []))

      # adapters may be passed in the options
      extract!(*Yell.__fetch__(@options, :adapters, :default => []))

      # 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 adapters.empty?
    end