Skip to content

Commit

Permalink
Use the standard logging module for liblogger (bug 1435)
Browse files Browse the repository at this point in the history
This adds compatibility for the standard Python logging module
for hooks, so that we can support the same hooks in both
gPodder 2 and gPodder 3.
  • Loading branch information
thp committed Oct 17, 2011
1 parent f65fe6c commit d28b687
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 29 deletions.
7 changes: 5 additions & 2 deletions bin/gpodder
Expand Up @@ -38,6 +38,7 @@ import sys
import os
import os.path
import platform
import logging

import gettext

Expand Down Expand Up @@ -169,8 +170,10 @@ if __name__ == '__main__':
gpodder.ui_folders.insert(0, os.path.join(ui_folder, 'desktop'))

if options.verbose:
from gpodder.liblogger import enable_verbose
enable_verbose()
FMT = '%(created)f [%(name)s] %(levelname)s: %(message)s'
logging.basicConfig(format=FMT, level=logging.DEBUG)
else:
logging.basicConfig()

if have_dbus:
# Try to find an already-running instance of gPodder
Expand Down
45 changes: 18 additions & 27 deletions src/gpodder/liblogger.py
Expand Up @@ -24,36 +24,27 @@
#

import traceback
import time
import logging
import sys

write_to_stdout = False
loggers = {'': logging.getLogger('gpodder')}

# XXX: This is deprecated for gPodder 3, and in 2.x, we only provide
# this for legacy support of the existing codebase. Please use the
# standard Python logging facility for your hook scripts. Thanks! :)
def log(message, *args, **kwargs):
if 'sender' in kwargs:
sender = kwargs['sender'].__class__.__name__
else:
sender = ''

def enable_verbose():
global write_to_stdout
write_to_stdout = True
if sender not in loggers:
loggers[sender] = logging.getLogger(sender)

first_time = time.time()
last_times = []
loggers[sender].info(message, *args)

def log( message, *args, **kwargs):
global first_time
global last_times
if 'sender' in kwargs:
message = '(%s) %s' % ( kwargs['sender'].__class__.__name__, message )
if 'bench_start' in kwargs:
last_times.append(time.time())
if 'bench_end' in kwargs and len(last_times) > 0:
message += (' (benchmark: %.4f seconds)' % (time.time()-(last_times.pop())))
if write_to_stdout:
print (('[%8.3f] ' % (time.time()-first_time)) + message) % args
if kwargs.get( 'traceback', False):
error = traceback.format_exc()
if error.strip() != 'None':
print error


def msg( type, message, *args):
s = message % args
print '%c\t%s' % ( type[0].upper(), s )
if kwargs.get('traceback', False):
error = traceback.format_exc()
if error.strip() != 'None':
print >>sys.stderr, error

0 comments on commit d28b687

Please sign in to comment.