prevent superfluous calls to Logger.makeRecord()

… by setting an appropriate minimal logging level for the root Logger.
This commit is contained in:
Mike Fährmann
2020-01-30 15:11:02 +01:00
parent 71851a6241
commit 383795b550
2 changed files with 33 additions and 28 deletions

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2014-2019 Mike Fährmann
# Copyright 2014-2020 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -129,17 +129,8 @@ def main():
for opts in args.options:
config.set(*opts)
# stream logging handler
output.configure_logging_handler(
"log", logging.getLogger().handlers[0])
# file logging handler
handler = output.setup_logging_handler(
"logfile", lvl=args.loglevel)
if handler:
logging.getLogger().addHandler(handler)
# loglevels
output.configure_logging(args.loglevel)
if args.loglevel >= logging.ERROR:
config.set(("output",), "mode", "null")
elif args.loglevel <= logging.DEBUG:

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2015-2019 Mike Fährmann
# Copyright 2015-2020 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -81,6 +81,36 @@ def initialize_logging(loglevel):
return logging.getLogger("gallery-dl")
def configure_logging(loglevel):
root = logging.getLogger()
minlevel = LOG_LEVEL
# stream logging handler
handler = root.handlers[0]
opts = config.interpolate(("output",), "log")
if opts:
if isinstance(opts, str):
opts = {"format": opts}
if handler.level == LOG_LEVEL and "level" in opts:
handler.setLevel(opts["level"])
if "format" in opts or "format-date" in opts:
handler.setFormatter(Formatter(
opts.get("format", LOG_FORMAT),
opts.get("format-date", LOG_FORMAT_DATE),
))
if minlevel > handler.level:
minlevel = handler.level
# file logging handler
handler = setup_logging_handler("logfile", lvl=loglevel)
if handler:
root.addHandler(handler)
if minlevel > handler.level:
minlevel = handler.level
root.setLevel(minlevel)
def setup_logging_handler(key, fmt=LOG_FORMAT, lvl=LOG_LEVEL):
"""Setup a new logging handler"""
opts = config.interpolate(("output",), key)
@@ -112,22 +142,6 @@ def setup_logging_handler(key, fmt=LOG_FORMAT, lvl=LOG_LEVEL):
return handler
def configure_logging_handler(key, handler):
"""Configure a logging handler"""
opts = config.interpolate(("output",), key)
if not opts:
return
if isinstance(opts, str):
opts = {"format": opts}
if handler.level == LOG_LEVEL and "level" in opts:
handler.setLevel(opts["level"])
if "format" in opts or "format-date" in opts:
handler.setFormatter(Formatter(
opts.get("format", LOG_FORMAT),
opts.get("format-date", LOG_FORMAT_DATE),
))
# --------------------------------------------------------------------
# Utility functions