我在config.py
中写了以下内容:
import time
import logging
#logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.INFO)
logFormatter = logging.Formatter('%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
rootLogger = logging.getLogger()
rootLogger.setLevel(logging.INFO)
fileHandler = logging.FileHandler("{0}.log".format(time.strftime('%Y%m%d%H%M%S')))
fileHandler.setFormatter(logFormatter)
rootLogger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
rootLogger.addHandler(consoleHandler)
然后我在做什么
from config import *
在我所有的脚本和导入的文件中。你知道吗
不幸的是,这会导致创建多个日志文件。你知道吗
如何解决这个问题?我不想将日志记录配置为控制台和文件的config.py
集中化。你知道吗
案例1:独立脚本/程序
如果我们讨论的是多个独立的脚本,那么应该以相同的方式设置日志:我会说,每个独立的应用程序都应该有自己的日志。如果你真的不想这样,你就必须这样做
append
filemode for the fileHandlerconfig.py
不会在某个地方被调用两次,因为您将添加两次日志处理程序,这将导致每个日志消息被打印两次。你知道吗案例2:一个由模块组成的大型应用程序
如果我们讨论的是一个由模块组成的大型应用程序,您可以采用如下结构:
你知道吗配置.py地址:
模块示例(部分)_模块.py)地址:
主要示例(主.py)你知道吗
说明:
set_up_logging()
,可以配置应用程序根记录器logger = logging.getLogger(__name__)
获取其记录器。由于模块记录器位于根记录器下面的层次结构中,因此这些日志将“向上传播”到根记录器,并由根记录器的处理程序处理。你知道吗有关更多信息,请参见Pythons logging module doc和/或logging cookbook
相关问题 更多 >
编程相关推荐