如何防止日志传播到其他模块?

lb3vh1jj  于 2021-09-29  发布在  Java
关注(0)|答案(3)|浏览(337)

我用python脚本(myscript.py)制作了一个记录器,

logfmt = '[%(asctime)s]{%(filename)s:%(lineno)d}[%(levelname)s] %(message)s'
datefmt = '%Y-%m-%dT%H:%M:%S'
formatter = logging.Formatter(logfmt, datefmt=datefmt)
logging.basicConfig(level=logging.DEBUG, format=logfmt, datefmt=datefmt)
logger = logging.getLogger(name='mine')

在信息层面,它看起来还可以。但在调试级别,奇怪的是matplotlib打印它的日志,其中显示了它导入的很长的模块列表。如何防止它并仅打印脚本的日志?

[2021-07-27T11:53:48]{myscript.py:183}[INFO] ...

[2021-07-27T11:53:48]{__init__.py:224}[DEBUG] matplotlib data path: /home/user/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data
[2021-07-27T11:53:48]{__init__.py:224}[DEBUG] CONFIGDIR=/home/user/.config/matplotlib
[2021-07-27T11:53:48]{__init__.py:1394}[DEBUG] matplotlib version 3.4.2
[2021-07-27T11:53:48]{__init__.py:1395}[DEBUG] interactive is False
[2021-07-27T11:53:48]{__init__.py:1396}[DEBUG] platform is linux
[2021-07-27T11:53:48]{__init__.py:1397}[DEBUG] loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_warnings', '_frozen_importlib_external', '_io', 'marshal', 'posix', '_thread', '_weakref', 'time', 'zipimport', '_codecs', 'codecs', 'encodings.aliases', 'encodings', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', '_abc', 'abc', 'io', '_stat', 'stat', '_collections_abc', 
... very only list ...
'cycler', 'matplotlib.rcsetup', 'matplotlib._version', 'matplotlib.ft2font', 'kiwisolver', 'dateutil.rrule', 'matplotlib.units', 'matplotlib.dates']

[2021-07-27T11:53:48]{myscript.py:351}[INFO] ...
gj3fmq9x

gj3fmq9x1#

获取所使用的记录器 matplotlib ,然后覆盖其日志级别:

logging.getLogger(name='matplotlib').setLevel(logging.WARNING)

如果您想知道我是如何找到日志文件名的,请检查如何使用python.logging模块列出所有现有的日志文件 matplotlib logger(与模块和包的名称恰好相同,但不必如此)。

zsohkypk

zsohkypk2#

没有一个设置来尝试这个,希望仍然有效。在日志配置之后添加:

mpl_logger = logging.getLogger(‘matplotlib’)
mpl_logger.setLevel(logging.WARNING)
jtoj6r0c

jtoj6r0c3#

只需将matplotlib的日志级别设置为“info”,请参见https://matplotlib.org/stable/_modules/matplotlib.html#set_loglevel

相关问题