# -*- coding: utf-8 -*-
-
# Copyright (c) 2009, 2010, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
#
# This file is part of sima
LOG_FORMATS = {
- logging.DEBUG: '{asctime} {filename: >10}:{lineno: <3} {levelname: <5}: {message}',
- logging.INFO: '{asctime} {levelname: <7}: {message}',
+ logging.DEBUG: '[{process}]{filename: >11}:{lineno: <3} {levelname: <7}: {message}',
+ logging.INFO: '{levelname: <7}: {message}',
#logging.DEBUG: '{asctime} {filename}:{lineno}({funcName}) '
#'{levelname}: {message}',
}
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)
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 = []
+ # Add timestamp for file handler
+ log_format = '{0} {1}'.format('{asctime}', log_format)
+ formatter = logging.Formatter(log_format, DATE_FMT, '{')
# create file handler
fileh = logging.FileHandler(logfile)
#fileh.setLevel(user_log_level)
fileh.setFormatter(formatter)
- if not logg.hasHandlers():
- logg.addHandler(fileh)
+ logg.addHandler(fileh)
else:
- if not logg.hasHandlers():
- # create console handler with a specified log level (STDOUT)
- couth = logging.StreamHandler(sys.stdout)
- #couth.setLevel(user_log_level)
- couth.addFilter(LevelFilter(logging.WARNING))
-
- # create console handler with warning log level (STDERR)
- cerrh = logging.StreamHandler(sys.stderr)
+ 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)
+ couth.addFilter(LevelFilter(logging.WARNING))
+
+ # create console handler with warning log level (STDERR)
+ cerrh = logging.StreamHandler(sys.stderr)
#cerrh.setLevel(logging.WARNING)
cerrh.setLevel(logging.ERROR)