日志文件中的 matplotlib.font_manager 调试消息

che*_*sus 5 python logging

我想在日志文件中记录我的优化进度,但是我的日志文件充满了来自 matplotlib 字体管理器的内容,例如:

DEBUG:matplotlib.font_manager:findfont: Matching :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0.)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'STIXSizeThreeSym' (STIXSizThreeSymBol.ttf) normal normal bold normal>) = 10.335)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'cmmi10' (cmmi10.ttf) normal normal 400 normal>) = 10.05)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'STIXSizeTwoSym' (STIXSizTwoSymReg.ttf) normal normal regular normal>) = 10.05)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'cmsy10' (cmsy10.ttf) normal normal 400 normal>) = 10.05)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'DejaVu Sans' (DejaVuSans-BoldOblique.ttf) oblique normal bold normal>) = 1.335)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'DejaVu Sans Mono' (DejaVuSansMono-BoldOblique.ttf) oblique normal bold normal>) = 11.335)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'STIXSizeOneSym' (STIXSizOneSymReg.ttf) normal normal regular normal>) = 10.05)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'DejaVu Sans Mono' (DejaVuSansMono.ttf) normal normal 400 normal>) = 10.05)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'DejaVu Sans' (DejaVuSans-Bold.ttf) normal normal bold normal>) = 0.33499999999999996)
DEBUG:matplotlib.font_manager:findfont: score(<Font 'DejaVu Sans Mono' (DejaVuSansMono-Bold.ttf) normal normal bold normal>) = 10.335)
Run Code Online (Sandbox Code Playgroud)

我使用记录器如下:

import logging

logger=logging.getLogger(__name__)

logging.basicConfig(filename='logfile.log',level=logging.DEBUG,
                    format='%(levelname)s:%(name)s:%(message)s)')

def objective(x):

    obj=model(x)
    logger.debug('objective = {}'.format(obj))

    return obj
Run Code Online (Sandbox Code Playgroud)

我怎样才能防止 matplotlib 在我的日志文件中乱写?

che*_*sus 8

解决方案是tomjn提供的:

level=logging.DEBUGbasicConfig被删除并在下面的行中logger.setLevel(logging.DEBUG) 添加。所以这使得

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)

  • 试试这个:`logging.getLogger('matplotlib.font_manager').disabled = True` (9认同)
  • 如何具体删除 font_manager 的日志? (4认同)