X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Flogger.py;h=05f9c35011e120ed07077077dd0c42d45ac22b9e;hb=325e87e6aaf33974ea8bc8e4b3d2fdbbef56e9a9;hp=ebe6c27142946932dfa23fd4826634eb61e37c8b;hpb=cf5fee72c57cf6b6f09b9caa78ab9e547f1d7542;p=mpd-sima.git diff --git a/sima/lib/logger.py b/sima/lib/logger.py index ebe6c27..05f9c35 100644 --- a/sima/lib/logger.py +++ b/sima/lib/logger.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- - -# Copyright (c) 2009, 2010, 2013 Jack Kaliko +# Copyright (c) 2009, 2010, 2013, 2014 Jack Kaliko # # This file is part of sima # @@ -29,10 +28,10 @@ import sys LOG_FORMATS = { + logging.DEBUG: '{asctime} {filename: >11}:{lineno: <3} {levelname: <7}: {message}', + logging.INFO: '{asctime} {levelname: <7}: {message}', #logging.DEBUG: '{asctime} {filename}:{lineno}({funcName}) ' #'{levelname}: {message}', - logging.DEBUG: '{asctime} {filename}:{lineno} {levelname}: {message}', - logging.INFO: '{asctime} {levelname}: {message}', } DATE_FMT = "%Y-%m-%d %H:%M:%S" @@ -51,13 +50,14 @@ class LevelFilter(logging.Filter):# Logging facility return record.levelno <= self.level -def set_logger(level='info', logfile=None, name='sima'): +def set_logger(level='info', logfile=None): """ logger: level: in debug, info, warning,… - file: provides to log to file + logfile: file to log to """ + name = 'sima' user_log_level = getattr(logging, level.upper()) if user_log_level > logging.DEBUG: log_format = LOG_FORMATS.get(logging.INFO) @@ -66,13 +66,27 @@ def set_logger(level='info', logfile=None, name='sima'): logg = logging.getLogger(name) formatter = logging.Formatter(log_format, DATE_FMT, '{') logg.setLevel(user_log_level) + filehdl = False + if logg.handlers: + for hdl in logg.handlers: + hdl.setFormatter(formatter) + if isinstance(hdl, logging.FileHandler): + filehdl = True + else: + logg.removeHandler(hdl) + if logfile: + if filehdl: + logg.handlers = [] # create file handler fileh = logging.FileHandler(logfile) #fileh.setLevel(user_log_level) fileh.setFormatter(formatter) logg.addHandler(fileh) else: + if filehdl: + logg.info('Not changing logging handlers, only updating formatter') + return # create console handler with a specified log level (STDOUT) couth = logging.StreamHandler(sys.stdout) #couth.setLevel(user_log_level)