78 lines
1.7 KiB
Python
78 lines
1.7 KiB
Python
#
|
|
# Copyright (c) 2014 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
#
|
|
|
|
"""
|
|
Logging
|
|
"""
|
|
|
|
import logging
|
|
import logging.handlers
|
|
|
|
LOG_FILE_NAME = "sm.log"
|
|
LOG_MAX_BYTES = 10485760
|
|
LOG_BACKUP_COUNT = 5
|
|
|
|
_log_to_console = False
|
|
_log_to_syslog = False
|
|
_log_to_file = False
|
|
|
|
_syslog_facility = None
|
|
|
|
_loggers = {}
|
|
|
|
|
|
def _setup_logger(logger):
|
|
formatter = logging.Formatter("%(asctime)s %(threadName)s[%(process)d] "
|
|
"%(name)s.%(lineno)d - %(levelname)s "
|
|
"%(message)s")
|
|
|
|
if _log_to_console:
|
|
handler = logging.StreamHandler()
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
if _log_to_syslog:
|
|
handler = logging.handlers.SysLogHandler(address='/dev/log',
|
|
facility=_syslog_facility)
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
if _log_to_file:
|
|
handler = logging.handlers.RotatingFileHandler(LOG_FILE_NAME, "a+",
|
|
LOG_MAX_BYTES,
|
|
LOG_BACKUP_COUNT)
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
|
|
def get_logger(name):
|
|
""" Get a logger or create one .
|
|
"""
|
|
|
|
global _loggers
|
|
|
|
_loggers[name] = logging.getLogger(name)
|
|
return _loggers[name]
|
|
|
|
|
|
def configure(conf):
|
|
""" Setup logging.
|
|
"""
|
|
|
|
global _loggers
|
|
global _log_to_syslog
|
|
global _syslog_facility
|
|
|
|
if conf['logging']['use_syslog']:
|
|
_log_to_syslog = True
|
|
_syslog_facility = conf['logging']['log_facility']
|
|
|
|
for logger in _loggers:
|
|
_setup_logger(_loggers[logger])
|