[brubru] colored output of logging system. Fixes #4875

This commit is contained in:
Yann Leboulanger 2009-03-11 09:16:07 +00:00
parent 68b26fda17
commit aa44b8466a
2 changed files with 16 additions and 72 deletions

View file

@ -67,16 +67,9 @@ thread_interface = None # Interface to run a thread and then a callback
config = config.Config() config = config.Config()
version = config.get('version') version = config.get('version')
connections = {} # 'account name': 'account (connection.Connection) instance' connections = {} # 'account name': 'account (connection.Connection) instance'
verbose = False
ipython_window = None ipython_window = None
h = logging.StreamHandler() log = logging.getLogger('gajim')
f = logging.Formatter('%(asctime)s %(name)s: %(message)s', '%d %b %Y %H:%M:%S')
h.setFormatter(f)
log = logging.getLogger('Gajim')
log.addHandler(h)
del h
del f
import logger import logger
logger = logger.Logger() # init the logger logger = logger.Logger() # init the logger

View file

@ -65,56 +65,18 @@ if os.name == 'nt':
# needed for docutils # needed for docutils
sys.path.append('.') sys.path.append('.')
import logging from common import logging_helpers
consoleloghandler = logging.StreamHandler() logging_helpers.init('TERM' in os.environ)
consoleloghandler.setLevel(1)
consoleloghandler.setFormatter(
logging.Formatter('%(asctime)s %(name)s: %(levelname)s: %(message)s')
)
log = logging.getLogger('gajim')
log.setLevel(logging.WARNING)
log.addHandler(consoleloghandler)
log.propagate = False
log = logging.getLogger('gajim.gajim')
# create intermediate loggers import logging
logging.getLogger('gajim.c') # gajim.gui or gajim.gtk more appropriate ?
logging.getLogger('gajim.c.x') log = logging.getLogger('gajim.gajim')
import getopt import getopt
from common import i18n from common import i18n
def parseLogLevel(arg):
if arg.isdigit():
return int(arg)
if arg.isupper():
return getattr(logging, arg)
raise ValueError(_('%s is not a valid loglevel'), repr(arg))
def parseLogTarget(arg):
arg = arg.lower()
if arg.startswith('.'): return arg[1:]
if arg.startswith('gajim'): return arg
return 'gajim.' + arg
def parseAndSetLogLevels(arg):
for directive in arg.split(','):
directive = directive.strip()
targets, level = directive.rsplit('=', 1)
level = parseLogLevel(level.strip())
for target in targets.split('='):
target = parseLogTarget(target.strip())
if target == '':
consoleloghandler.setLevel(level)
print "consoleloghandler level set to %s" % level
else:
logger = logging.getLogger(target)
logger.setLevel(level)
print "Logger %s level set to %d" % (target, level)
def parseOpts(): def parseOpts():
profile = '' profile = ''
verbose = False
config_path = None config_path = None
try: try:
@ -130,21 +92,19 @@ def parseOpts():
print 'gajim [--help] [--quiet] [--verbose] [--loglevel subsystem=level[,subsystem=level[...]]] [--profile name] [--config-path]' print 'gajim [--help] [--quiet] [--verbose] [--loglevel subsystem=level[,subsystem=level[...]]] [--profile name] [--config-path]'
sys.exit() sys.exit()
elif o in ('-q', '--quiet'): elif o in ('-q', '--quiet'):
consoleloghandler.setLevel(logging.CRITICAL) logging_helpers.set_quiet()
verbose = False
elif o in ('-v', '--verbose'): elif o in ('-v', '--verbose'):
consoleloghandler.setLevel(logging.INFO) logging_helpers.set_verbose()
verbose = True
elif o in ('-p', '--profile'): # gajim --profile name elif o in ('-p', '--profile'): # gajim --profile name
profile = a profile = a
elif o in ('-l', '--loglevel'): elif o in ('-l', '--loglevel'):
parseAndSetLogLevels(a) logging_helpers.set_loglevels(a)
elif o in ('-c', '--config-path'): elif o in ('-c', '--config-path'):
config_path = a config_path = a
return profile, verbose, config_path return profile, config_path
profile, verbose, config_path = parseOpts() profile, config_path = parseOpts()
del parseOpts, parseAndSetLogLevels, parseLogTarget, parseLogLevel del parseOpts
import locale import locale
profile = unicode(profile, locale.getpreferredencoding()) profile = unicode(profile, locale.getpreferredencoding())
@ -288,9 +248,6 @@ from common import optparser
from common import dataforms from common import dataforms
from common import passwords from common import passwords
if verbose: gajim.verbose = True
del verbose
gajimpaths = common.configpaths.gajimpaths gajimpaths = common.configpaths.gajimpaths
pid_filename = gajimpaths['PID_FILE'] pid_filename = gajimpaths['PID_FILE']
@ -3250,9 +3207,9 @@ class Interface:
} }
cfg_was_read = parser.read() cfg_was_read = parser.read()
# Do not set gajim.verbose to False if -v option was given # override logging settings from config (don't take care of '-q' option)
if gajim.config.get('verbose'): if gajim.config.get('verbose'):
gajim.verbose = True logging_helpers.set_verbose()
# Is Gajim default app? # Is Gajim default app?
if os.name != 'nt' and gajim.config.get('check_if_gajim_is_default'): if os.name != 'nt' and gajim.config.get('check_if_gajim_is_default'):
@ -3300,11 +3257,6 @@ class Interface:
if gajim.config.get('autodetect_browser_mailer') or not cfg_was_read: if gajim.config.get('autodetect_browser_mailer') or not cfg_was_read:
gtkgui_helpers.autodetect_browser_mailer() gtkgui_helpers.autodetect_browser_mailer()
if gajim.verbose:
gajim.log.setLevel(gajim.logging.DEBUG)
else:
gajim.log.setLevel(None)
gajim.idlequeue = idlequeue.get_idlequeue() gajim.idlequeue = idlequeue.get_idlequeue()
# resolve and keep current record of resolved hosts # resolve and keep current record of resolved hosts
gajim.resolver = resolver.get_resolver(gajim.idlequeue) gajim.resolver = resolver.get_resolver(gajim.idlequeue)
@ -3500,9 +3452,8 @@ if __name__ == '__main__':
# ^C exits the application normally to delete pid file # ^C exits the application normally to delete pid file
signal.signal(signal.SIGINT, sigint_cb) signal.signal(signal.SIGINT, sigint_cb)
if gajim.verbose: log.info("Encodings: d:%s, fs:%s, p:%s", sys.getdefaultencoding(), \
print >> sys.stderr, "Encodings: d:%s, fs:%s, p:%s" % \ sys.getfilesystemencoding(), locale.getpreferredencoding())
(sys.getdefaultencoding(), sys.getfilesystemencoding(), locale.getpreferredencoding())
if ((os.name != 'nt') and (sys.platform != 'darwin')): if ((os.name != 'nt') and (sys.platform != 'darwin')):
# Session Management support # Session Management support