From fc8b932723bdb32b961aaf01319b4282164cfbdb Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 5 May 2010 18:33:05 +0200 Subject: [PATCH] Add file based debug logger --- mopidy/__main__.py | 23 +++++++++++++++++++++-- mopidy/settings.py | 6 ++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 12d27ed3..0769d6b6 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -1,5 +1,6 @@ import asyncore import logging +import logging.handlers import multiprocessing import optparse import os @@ -16,7 +17,7 @@ logger = logging.getLogger('mopidy.main') def main(): options = _parse_options() - _setup_logging(options.verbosity_level) + _setup_logging(options.verbosity_level, options.debug) get_or_create_folder('~/.mopidy/') core_queue = multiprocessing.Queue() get_class(settings.SERVER)(core_queue) @@ -32,17 +33,35 @@ def _parse_options(): parser.add_option('-v', '--verbose', action='store_const', const=2, dest='verbosity_level', help='more output (debug level)') + parser.add_option('-d', '--debug', + action='store_true', dest='debug', + help='debug logging to file') return parser.parse_args()[0] -def _setup_logging(verbosity_level): +def _setup_logging(verbosity_level, debug): if verbosity_level == 0: level = logging.WARNING elif verbosity_level == 2: level = logging.DEBUG else: level = logging.INFO + logging.basicConfig(format=settings.CONSOLE_LOG_FORMAT, level=level) + if not debug: + return + + root = logging.getLogger('') + root.setLevel(logging.DEBUG) + + formatter = logging.Formatter(settings.DEBUG_LOG_FORMAT) + + handler = logging.handlers.RotatingFileHandler( + settings.DEBUG_LOG_FILENAME, maxBytes=102400, backupCount=3) + handler.setFormatter(formatter) + + root.addHandler(handler) + if __name__ == '__main__': try: main() diff --git a/mopidy/settings.py b/mopidy/settings.py index 886e7189..470bf2a2 100644 --- a/mopidy/settings.py +++ b/mopidy/settings.py @@ -29,6 +29,12 @@ BACKENDS = ( CONSOLE_LOG_FORMAT = u'%(levelname)-8s %(asctime)s' + \ ' [%(process)d:%(threadName)s] %(name)s\n %(message)s' +#: The log format used for debug log dumps. +DEBUG_LOG_FORMAT = u'%(asctime)s - %(levelname)-5s - %(name)s - %(message)s' + +#: The file to log debug data to. +DEBUG_LOG_FILENAME = u'debug.log' + #: Protocol frontend to use. Default:: #: #: FRONTEND = u'mopidy.mpd.frontend.MpdFrontend'