Skip to content

Commit 3a3d84f

Browse files
committed
python/aqmp: Disable logging messages by default
AQMP is a library, and ideally it should not print error diagnostics unless a user opts into seeing them. By default, Python will print all WARNING, ERROR or CRITICAL messages to screen if no logging configuration has been created by a client application. In AQMP's case, ERROR logging statements are used to report additional detail about runtime failures that will also eventually be reported to the client library via an Exception, so these messages should not be rendered by default. (Why bother to have them at all, then? In async contexts, there may be multiple Exceptions and we are only able to report one of them back to the client application. It is not reasonably easy to predict ahead of time if one or more of these Exceptions will be squelched. Therefore, it's useful to log intermediate failures to help make sense of the ultimate, resulting failure.) Add a NullHandler that will suppress these messages until a client application opts into logging via logging.basicConfig or similar. Note that upon calling basicConfig(), this handler will *not* suppress these messages from being displayed by the client's configuration. Signed-off-by: John Snow <[email protected]> Reviewed-by: Paolo Bonzini <[email protected]> Reviewed-by: Eric Blake <[email protected]> Message-id: [email protected] Signed-off-by: John Snow <[email protected]>
1 parent 3e55dc3 commit 3a3d84f

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

python/qemu/aqmp/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
# This work is licensed under the terms of the GNU GPL, version 2. See
2222
# the COPYING file in the top-level directory.
2323

24+
import logging
2425
import warnings
2526

2627
from .error import AQMPError
@@ -41,6 +42,9 @@
4142

4243
warnings.warn(_WMSG, FutureWarning)
4344

45+
# Suppress logging unless an application engages it.
46+
logging.getLogger('qemu.aqmp').addHandler(logging.NullHandler())
47+
4448

4549
# The order of these fields impact the Sphinx documentation order.
4650
__all__ = (

0 commit comments

Comments
 (0)