[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