[brubru] colored output of logging system. Fixes #4875
This commit is contained in:
		
							parent
							
								
									68b26fda17
								
							
						
					
					
						commit
						aa44b8466a
					
				
					 2 changed files with 16 additions and 72 deletions
				
			
		| 
						 | 
				
			
			@ -67,16 +67,9 @@ thread_interface = None # Interface to run a thread and then a callback
 | 
			
		|||
config = config.Config()
 | 
			
		||||
version = config.get('version')
 | 
			
		||||
connections = {} # 'account name': 'account (connection.Connection) instance'
 | 
			
		||||
verbose = False
 | 
			
		||||
ipython_window = None
 | 
			
		||||
 | 
			
		||||
h = logging.StreamHandler()
 | 
			
		||||
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
 | 
			
		||||
log = logging.getLogger('gajim')
 | 
			
		||||
 | 
			
		||||
import logger
 | 
			
		||||
logger = logger.Logger() # init the logger
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										79
									
								
								src/gajim.py
									
										
									
									
									
								
							
							
						
						
									
										79
									
								
								src/gajim.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -65,56 +65,18 @@ if os.name == 'nt':
 | 
			
		|||
	# needed for docutils
 | 
			
		||||
	sys.path.append('.')
 | 
			
		||||
 | 
			
		||||
import logging
 | 
			
		||||
consoleloghandler = logging.StreamHandler()
 | 
			
		||||
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')
 | 
			
		||||
from common import logging_helpers
 | 
			
		||||
logging_helpers.init('TERM' in os.environ)
 | 
			
		||||
 | 
			
		||||
# create intermediate loggers
 | 
			
		||||
logging.getLogger('gajim.c')
 | 
			
		||||
logging.getLogger('gajim.c.x')
 | 
			
		||||
import logging
 | 
			
		||||
# gajim.gui or gajim.gtk more appropriate ?
 | 
			
		||||
log = logging.getLogger('gajim.gajim')
 | 
			
		||||
 | 
			
		||||
import getopt
 | 
			
		||||
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():
 | 
			
		||||
	profile = ''
 | 
			
		||||
	verbose = False
 | 
			
		||||
	config_path = None
 | 
			
		||||
 | 
			
		||||
	try:
 | 
			
		||||
| 
						 | 
				
			
			@ -130,21 +92,19 @@ def parseOpts():
 | 
			
		|||
			print 'gajim [--help] [--quiet] [--verbose] [--loglevel subsystem=level[,subsystem=level[...]]] [--profile name] [--config-path]'
 | 
			
		||||
			sys.exit()
 | 
			
		||||
		elif o in ('-q', '--quiet'):
 | 
			
		||||
			consoleloghandler.setLevel(logging.CRITICAL)
 | 
			
		||||
			verbose = False
 | 
			
		||||
			logging_helpers.set_quiet()
 | 
			
		||||
		elif o in ('-v', '--verbose'):
 | 
			
		||||
			consoleloghandler.setLevel(logging.INFO)
 | 
			
		||||
			verbose = True
 | 
			
		||||
			logging_helpers.set_verbose()
 | 
			
		||||
		elif o in ('-p', '--profile'): # gajim --profile name
 | 
			
		||||
			profile = a
 | 
			
		||||
		elif o in ('-l', '--loglevel'):
 | 
			
		||||
			parseAndSetLogLevels(a)
 | 
			
		||||
			logging_helpers.set_loglevels(a)
 | 
			
		||||
		elif o in ('-c', '--config-path'):
 | 
			
		||||
			config_path = a
 | 
			
		||||
	return profile, verbose, config_path
 | 
			
		||||
	return profile, config_path
 | 
			
		||||
 | 
			
		||||
profile, verbose, config_path = parseOpts()
 | 
			
		||||
del parseOpts, parseAndSetLogLevels, parseLogTarget, parseLogLevel
 | 
			
		||||
profile, config_path = parseOpts()
 | 
			
		||||
del parseOpts
 | 
			
		||||
 | 
			
		||||
import locale
 | 
			
		||||
profile = unicode(profile, locale.getpreferredencoding())
 | 
			
		||||
| 
						 | 
				
			
			@ -288,9 +248,6 @@ from common import optparser
 | 
			
		|||
from common import dataforms
 | 
			
		||||
from common import passwords
 | 
			
		||||
 | 
			
		||||
if verbose: gajim.verbose = True
 | 
			
		||||
del verbose
 | 
			
		||||
 | 
			
		||||
gajimpaths = common.configpaths.gajimpaths
 | 
			
		||||
 | 
			
		||||
pid_filename = gajimpaths['PID_FILE']
 | 
			
		||||
| 
						 | 
				
			
			@ -3250,9 +3207,9 @@ class Interface:
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		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'):
 | 
			
		||||
			gajim.verbose = True
 | 
			
		||||
			logging_helpers.set_verbose()
 | 
			
		||||
 | 
			
		||||
		# Is Gajim default app?
 | 
			
		||||
		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:
 | 
			
		||||
			gtkgui_helpers.autodetect_browser_mailer()
 | 
			
		||||
 | 
			
		||||
		if gajim.verbose:
 | 
			
		||||
			gajim.log.setLevel(gajim.logging.DEBUG)
 | 
			
		||||
		else:
 | 
			
		||||
			gajim.log.setLevel(None)
 | 
			
		||||
 | 
			
		||||
		gajim.idlequeue = idlequeue.get_idlequeue()
 | 
			
		||||
		# resolve and keep current record of resolved hosts
 | 
			
		||||
		gajim.resolver = resolver.get_resolver(gajim.idlequeue)
 | 
			
		||||
| 
						 | 
				
			
			@ -3500,9 +3452,8 @@ if __name__ == '__main__':
 | 
			
		|||
	# ^C exits the application normally to delete pid file
 | 
			
		||||
	signal.signal(signal.SIGINT, sigint_cb)
 | 
			
		||||
 | 
			
		||||
	if gajim.verbose:
 | 
			
		||||
		print >> sys.stderr, "Encodings: d:%s, fs:%s, p:%s" % \
 | 
			
		||||
		(sys.getdefaultencoding(), sys.getfilesystemencoding(), locale.getpreferredencoding())
 | 
			
		||||
	log.info("Encodings: d:%s, fs:%s, p:%s", sys.getdefaultencoding(), \
 | 
			
		||||
		sys.getfilesystemencoding(), locale.getpreferredencoding())
 | 
			
		||||
 | 
			
		||||
	if ((os.name != 'nt') and (sys.platform != 'darwin')):
 | 
			
		||||
		# Session Management support
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue