即使定义了FileHandler,记录器也会打印到控制台

时间:2015-12-15 12:34:43

标签: python

我遇到了python日志记录模块的问题。在下面我创建一个"记录器"我稍后将在我的代码中使用它。在这里,我只使用FileHandler,但我看到当我将一些消息记录到此记录器时,它们也出现在控制台上。打印到控制台会使整个程序变慢。

以下是代码:

  logger = logging.getLogger("Design")
  logger.setLevel(logging.DEBUG)

  #create a file handler which logs all INFO, DEBUG, ERROR messages

  fh = logging.FileHandler('Design.log', mode='w')

  fmt = logging.Formatter('[%(levelname)s] %(message)s')       

  fh.setFormatter(fmt)

 #adding the handlers to logger
  logger.addHandler(fh)

2 个答案:

答案 0 :(得分:1)

您缺少logger.handlers = []

logger = logging.getLogger("Design")
logger.setLevel(logging.DEBUG)
logger.handlers = []

#create a file handler which logs all INFO, DEBUG, ERROR messages

fh = logging.FileHandler('Design.log', mode='w')

fmt = logging.Formatter('[%(levelname)s] %(message)s')       

fh.setFormatter(fmt)

#adding the handlers to logger
logger.addHandler(fh)

修改

如果您之前已设置basicConfig()

,请添加此选项
logger.propagate = False

答案 1 :(得分:0)

对我造成此错误的是导入语句。

工作说明

import logging
fh = logging.FileHandler('error.log', mode='w')
logger = getLogger(__name__)

导入时出错*

from logging import *
fh = logging.FileHandler('error.log', mode='w')
logger = getLogger(__name__)

并且没有更改我的代码,所以我需要成为

from logging import *
fh = FileHandler('error.log', mode='w')
logger = getLogger(__name__)
相关问题