42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
import logging
|
|
import sys
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
from iottb import definitions
|
|
from iottb.definitions import MAX_VERBOSITY, CONSOLE_LOG_FORMATS, APP_NAME, LOGFILE_LOG_FORMAT
|
|
|
|
loglevel = definitions.LOGLEVEL
|
|
|
|
|
|
def setup_logging(verbosity, debug=loglevel):
|
|
""" Setup root logger for iottb """
|
|
log_level = loglevel
|
|
handlers = []
|
|
date_format = '%Y-%m-%d %H:%M:%S'
|
|
if verbosity > 0:
|
|
log_level = logging.WARNING
|
|
if verbosity > MAX_VERBOSITY:
|
|
verbosity = MAX_VERBOSITY
|
|
log_level = logging.INFO
|
|
assert verbosity <= MAX_VERBOSITY, f'Verbosity must be <= {MAX_VERBOSITY}'
|
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
print(str(sys.stdout))
|
|
console_handler.setFormatter(logging.Formatter(CONSOLE_LOG_FORMATS[verbosity], datefmt=date_format))
|
|
console_handler.setLevel(logging.DEBUG) # can keep at debug since it depends on global level?
|
|
handlers.append(console_handler)
|
|
|
|
if debug:
|
|
log_level = logging.DEBUG
|
|
|
|
# Logfile logs INFO+, no debugs though
|
|
file_handler = RotatingFileHandler(f'{str(definitions.LOGDIR / APP_NAME)}.log', maxBytes=10240, backupCount=5)
|
|
file_handler.setFormatter(logging.Formatter(LOGFILE_LOG_FORMAT[verbosity], datefmt=date_format))
|
|
file_handler.setLevel(logging.INFO)
|
|
|
|
# finnish root logger setup
|
|
handlers.append(file_handler)
|
|
# Force this config to be applied to root logger
|
|
logging.basicConfig(level=log_level, handlers=handlers, force=True)
|
|
|
|
|