Package: borgmatic
Version: 1.8.3-1
Severity: normal
Dear Maintainer,
TL;DR: A Python exception pollutes the output when using borgmatic 1.8.3 with
invalid parameters or other configuration problems.
This issue is corrected in later versions, but here is a small patch to correct
it.
I made a migration from a previous borgmatic version with different parameters
and faced this issue with bormatic 1.8.3 :
When using incorrect parameters (in CLI), borgmatic prints a Python exception
about the DISABLED property being undefined on the logging module.
By example :
----------------------------------------
> borgmatic prunee
usage: borgmatic [-h] [-c CONFIG_PATHS] [-n] [-nc] [-v {-2,-1,0,1,2}]
[--syslog-verbosity {-2,-1,0,1,2}] [--log-file-verbosity {-2,-1,0,1,2}]
[--monitoring-verbosity {-2,-1,0,1,2}] [--log-file LOG_FILE] [--log-file-format
LOG_FILE_FORMAT]
[--log-json] [--override OPTION.SUBOPTION=VALUE]
[--no-environment-interpolation] [--bash-completion] [--fish-completion]
[--version]
...
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/borgmatic/commands/borgmatic.py", line
816, in main
arguments = parse_arguments(*sys.argv[1:])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/borgmatic/commands/arguments.py", line
1283, in parse_arguments
raise ValueError(
ValueError: Unrecognized argument: prunee
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/borgmatic", line 33, in <module>
sys.exit(load_entry_point('borgmatic==1.8.3', 'console_scripts',
'borgmatic')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/borgmatic/commands/borgmatic.py", line
818, in main
configure_logging(logging.CRITICAL)
File "/usr/lib/python3/dist-packages/borgmatic/logger.py", line 170, in
configure_logging
syslog_log_level = logging.DISABLED
^^^^^^^^^^^^^^^^
AttributeError: module 'logging' has no attribute 'DISABLED'
----------------------------------------
This issue is, in a sense, cosmetic, but pollutes the logs with useless
stacktraces.
It comes from logger.py, where the custom DISABLED status is being used (line
170) before being defined (line 176).
This issue is corrected in borgmatic 1.8.4, but it can be corrected too in
1.8.3 with the following patch :
----------------------------------------
--- /usr/lib/python3/dist-packages/borgmatic/logger.py 2024-02-18
08:45:36.101652793 +0100
+++ /usr/lib/python3/dist-packages/borgmatic/logger-ok.py 2024-02-18
08:47:19.790311543 +0100
@@ -166,6 +166,9 @@
Raise FileNotFoundError or PermissionError if the log file could not be
opened for writing.
'''
+
+ add_custom_log_levels()
+
if syslog_log_level is None:
syslog_log_level = logging.DISABLED
if log_file_log_level is None:
@@ -173,8 +176,6 @@
if monitoring_log_level is None:
monitoring_log_level = console_log_level
- add_custom_log_levels()
-
# Log certain log levels to console stderr and others to stdout. This
supports use cases like
# grepping (non-error) output.
console_disabled = logging.NullHandler()
----------------------------------------
Resulting in the following output for the same command :
----------------------------------------
> borgmatic -c /etc/borgmatic.d/wordpress-bb.yaml prunee --list --stats
usage: borgmatic [-h] [-c CONFIG_PATHS] [-n] [-nc] [-v {-2,-1,0,1,2}]
[--syslog-verbosity {-2,-1,0,1,2}] [--log-file-verbosity {-2,-1,0,1,2}]
[--monitoring-verbosity {-2,-1,0,1,2}] [--log-file LOG_FILE] [--log-file-format
LOG_FILE_FORMAT]
[--log-json] [--override OPTION.SUBOPTION=VALUE]
[--no-environment-interpolation] [--bash-completion] [--fish-completion]
[--version]
...
Unrecognized argument: prunee
Need some help? https://torsion.org/borgmatic/#issues
----------------------------------------
Thnks for reading me :)
-- System Information:
Debian Release: trixie/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 6.6.13-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages borgmatic depends on:
ii borgbackup 1.2.7-2
ii python3 3.11.6-1
ii python3-colorama 0.4.6-4
ii python3-jsonschema 4.10.3-2
ii python3-packaging 23.2-1
ii python3-pkg-resources 68.1.2-2
ii python3-requests 2.31.0+dfsg-1
ii python3-ruamel.yaml 0.17.21-1
borgmatic recommends no packages.
borgmatic suggests no packages.
-- no debconf information