text: # -*- coding: utf-8 -*-
  ################################################################################
  #  Copyright (C) 2011  Travis Shirk <travis@pobox.com>
  #
  #  This program is free software; you can redistribute it and/or modify
  #  it under the terms of the GNU General Public License as published by
  #  the Free Software Foundation; either version 2 of the License, or
  #  (at your option) any later version.
  #
  #  This program is distributed in the hope that it will be useful,
  #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  #  GNU General Public License for more details.
  #
  #  You should have received a copy of the GNU General Public License
  #  along with this program; if not, write to the Free Software
  #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  #
  ################################################################################
  import logging
  
  logging.basicConfig()
  
  DEFAULT_FORMAT = '%(name)s:%(levelname)s: %(message)s'
  MAIN_LOGGER = "eyed3"
  
  # Add some levels
  logging.VERBOSE = logging.DEBUG + 1
  logging.addLevelName(logging.VERBOSE, "VERBOSE")
  
  class Logger(logging.Logger):
      '''Base class for all loggers'''
  
      def __init__(self, name):
          logging.Logger.__init__(self, name)
  
          # Using propogation of child to parent, by default
          self.propagate = True
          self.setLevel(logging.NOTSET)
  
      def verbose(self, msg, *args, **kwargs):
          '''Log \a msg at 'verbose' level, debug < verbose < info'''
          self.log(logging.VERBOSE, msg, *args, **kwargs)
  
  
  logging.setLoggerClass(Logger)
  
  def _initLogging():
      '''initialize the default logger with console output'''
      log = logging.getLogger(MAIN_LOGGER)
      # Don't propgate base 'eyed3'
      log.propagate = False
  
      console_handler = logging.StreamHandler()
      console_handler.setFormatter(logging.Formatter(DEFAULT_FORMAT))
      log.addHandler(console_handler)
  
      log.setLevel(logging.WARNING)
  
      return log
  
  ## The main logger
  log = _initLogging()
  del _initLogging
  
  LEVELS = (logging.DEBUG, logging.VERBOSE, logging.INFO,
            logging.WARNING, logging.ERROR, logging.CRITICAL)
  