onedns/onedns/logger.py

52 lines
1.5 KiB
Python

import os
import logging
import logging.handlers
LOG_FORMAT = ("%(asctime)s %(filename)s:%(lineno)d - %(levelname)s - "
"%(message)s")
class NullHandler(logging.Handler):
def emit(self, record):
pass
def get_onedns_logger():
log = logging.getLogger('onedns')
log.addHandler(NullHandler())
return log
log = get_onedns_logger()
console = logging.StreamHandler()
formatter = logging.Formatter(LOG_FORMAT)
console.setFormatter(formatter)
def configure_onedns_logging(use_syslog=False, syslog_device='/dev/log',
debug=False):
"""
Configure logging for onedns *application* code
By default onedns's logger has no formatters and a NullHandler so that
other developers using onedns as a library can configure logging as
they see fit. This method is used in onedns's application code (i.e.
the 'onedns' command) to toggle onedns's application specific
formatters/handlers
use_syslog - enable logging all messages to syslog. currently only works if
/dev/log exists on the system (standard for most Linux distros)
"""
log.setLevel(logging.DEBUG)
if debug:
console.setLevel(logging.DEBUG)
else:
console.setLevel(logging.INFO)
log.addHandler(console)
if use_syslog and os.path.exists(syslog_device):
log.debug("Logging to %s" % syslog_device)
syslog_handler = logging.handlers.SysLogHandler(address=syslog_device)
syslog_handler.setLevel(logging.DEBUG)
log.addHandler(syslog_handler)