add option to write logging output to a file

- '--write-log FILE' as cmdline argument
- 'output.logfile' as config file option
This commit is contained in:
Mike Fährmann 2018-01-26 18:51:51 +01:00
parent f94e3706a8
commit 97f4f15ec0
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88
4 changed files with 39 additions and 8 deletions

View File

@ -72,6 +72,7 @@ Description Controls whether the output strings should be shortened to fit
on one console line. on one console line.
=========== ===== =========== =====
output.progress output.progress
--------------- ---------------
=========== ===== =========== =====
@ -89,6 +90,15 @@ Description Controls the progress indicator when *gallery-dl* is run with
=========== ===== =========== =====
output.logfile
--------------
=========== =====
Type ``string``
Default ``null``
Description File to write logging output to.
=========== =====
Downloader Options Downloader Options
================== ==================

View File

@ -127,6 +127,7 @@
{ {
"mode": "auto", "mode": "auto",
"shorten": true, "shorten": true,
"progress": true "progress": true,
"logfile": null,
} }
} }

View File

@ -21,7 +21,7 @@ if sys.hexversion < 0x3030000:
sys.exit(1) sys.exit(1)
import logging import logging
from . import version, config, option, extractor, job, exception from . import version, config, option, extractor, job, util, exception
__version__ = version.__version__ __version__ = version.__version__
log = logging.getLogger("gallery-dl") log = logging.getLogger("gallery-dl")
@ -108,6 +108,21 @@ def main():
except AttributeError: except AttributeError:
pass pass
# logfile
logfile = config.interpolate(("output", "logfile"))
if logfile:
try:
handler = logging.FileHandler(util.expand_path(logfile))
except OSError as exc:
log.warning("logfile: %s", exc)
else:
formatter = logging.Formatter(
"[%(asctime)s][%(name)s][%(levelname)s] %(message)s",
"%Y-%m-%d %H:%M:%S")
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
logging.getLogger().addHandler(handler)
if args.list_modules: if args.list_modules:
for module_name in extractor.modules: for module_name in extractor.modules:
print(module_name) print(module_name)

View File

@ -93,12 +93,6 @@ def build_parser():
metavar="FILE", action=ConfigAction, dest="cookies", metavar="FILE", action=ConfigAction, dest="cookies",
help="File to load additional cookies from", help="File to load additional cookies from",
) )
general.add_argument(
"--write-unsupported",
metavar="FILE", dest="unsupportedfile",
help=("Write URLs, which get emitted by other extractors but cannot "
"be handled, to FILE"),
)
output = parser.add_argument_group("Output Options") output = parser.add_argument_group("Output Options")
output.add_argument( output.add_argument(
@ -133,6 +127,17 @@ def build_parser():
help=("Print a list of extractor classes " help=("Print a list of extractor classes "
"with description, (sub)category and example URL"), "with description, (sub)category and example URL"),
) )
output.add_argument(
"--write-log",
metavar="FILE", dest="logfile", action=ConfigAction,
help=("Write logging output to FILE"),
)
output.add_argument(
"--write-unsupported",
metavar="FILE", dest="unsupportedfile",
help=("Write URLs, which get emitted by other extractors but cannot "
"be handled, to FILE"),
)
downloader = parser.add_argument_group("Downloader Options") downloader = parser.add_argument_group("Downloader Options")
downloader.add_argument( downloader.add_argument(