def configure_logging(options):
'''Configure log-level and logging handlers.
:param bool quiet:
If *True*, do not configure a console handler.
Defaults to *False*.
:param bool verbose:
If *True*, set the log-level for the console handler
to DEBUG. Has no effect if ``quiet`` is *True*.
Defaults to *False*.
:param str logfile:
If given, set up a RotatingFileHandler to receive logging output.
Should be the absolute path to the desired logfile
or special value "syslog".
Defaults to *None* (no logfile).
:param int log_level:
Level to use for ``logfile``.
Must be one of the constants defined in the ``logging`` module
(e.g. DEBUG, INFO, ...).
Has no effect if ``logfile`` is not given.
'''
rootlog = logging.getLogger()
rootlog.setLevel(logging.DEBUG)
if not options.quiet:
console_hdl = logging.StreamHandler()
console_level = logging.DEBUG if options.verbose else logging.WARNING
console_hdl.setLevel(console_level)
console_hdl.setFormatter(logging.Formatter(CONSOLE_FMT))
rootlog.addHandler(console_hdl)
if options.logfile:
if options.logfile == 'syslog':
logfile_hdl = handlers.SysLogHandler(address='/dev/log')
logfile_hdl.setFormatter(logging.Formatter(SYSLOG_FMT))
else:
logfile_hdl = handlers.RotatingFileHandler(options.logfile)
logfile_hdl.setFormatter(logging.Formatter(LOGFILE_FMT))
logfile_hdl.setLevel(options.log_level)
rootlog.addHandler(logfile_hdl)
评论列表
文章目录