diff options
| author | clpo13 <cody@lokken.dev> | 2023-10-20 16:57:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-20 16:57:32 -0700 |
| commit | 8583862e2d16144f184db2e31dbc37dbe3464fed (patch) | |
| tree | 4a0d9edb5301b26d9dbd22ceb307a7e3b1db4820 /src/wikiget/logging.py | |
| parent | e274ccea56219c7d07c0e677d44c8122a699dcaf (diff) | |
| parent | c1820026f97eaf671c29ab30f02879de0ac4df89 (diff) | |
| download | wikiget-8583862e2d16144f184db2e31dbc37dbe3464fed.tar.gz wikiget-8583862e2d16144f184db2e31dbc37dbe3464fed.zip | |
Merge pull request #8 from clpo13/dev
Merge dev branch changes into master
Diffstat (limited to 'src/wikiget/logging.py')
| -rw-r--r-- | src/wikiget/logging.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/wikiget/logging.py b/src/wikiget/logging.py new file mode 100644 index 0000000..87b917c --- /dev/null +++ b/src/wikiget/logging.py @@ -0,0 +1,58 @@ +# wikiget - CLI tool for downloading files from Wikimedia sites +# Copyright (C) 2023 Cody Logan +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Wikiget is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Wikiget is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Wikiget. If not, see <https://www.gnu.org/licenses/>. + +import logging +from argparse import Namespace + +import wikiget + + +class FileLogAdapter(logging.LoggerAdapter): + def process(self, msg, kwargs): + return f"[{self.extra['filename']}] {msg}", kwargs + + +def configure_logging(args: Namespace) -> None: + loglevel = logging.WARNING + if args.verbose >= wikiget.VERY_VERBOSE: + # this includes API and library messages + loglevel = logging.DEBUG + elif args.verbose >= wikiget.STD_VERBOSE: + loglevel = logging.INFO + elif args.quiet: + loglevel = logging.ERROR + + # configure logging: + # console log level is set via -v, -vv, and -q options; + # file log level is always debug (TODO: make this user configurable) + base_format = "%(message)s" + log_format = "[%(levelname)s] " + base_format + if args.logfile: + # log to console and file + logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s [%(levelname)-7s] " + base_format, + filename=args.logfile, + ) + + console = logging.StreamHandler() + console.setLevel(loglevel) + console.setFormatter(logging.Formatter(log_format)) + logging.getLogger("").addHandler(console) + else: + # log only to console + logging.basicConfig(level=loglevel, format=log_format) |
