我正在使用日志记录模块使用以下代码在单独的日志文件中写入错误和调试消息。但是我希望仅在设置了特定环境变量的情况下才进行日志记录。在下面的代码中,我通过设置来关闭日志记录logger.disabled=True
。但是,我观察到,当我的应用程序完成执行时,将显示空的日志文件。我在设置logger.disabled=True
语句之后添加了一个删除这些文件的检查,但是它说该文件不存在。这些文件何时生成-在脚本执行结束时,即使禁用了记录器,也可以防止写入空文件吗?
class LevelFilter(logging.Filter):
def __init__(self, level):
self.level = level
def filter(self, record):
return record.levelno == self.level
logger = logging.getLogger("exceptionsLogger")
debugLogFileHandler = logging.FileHandler("Debug.log", mode='w')
errorLogFileHandler = logging.FileHandler("Error.Log", mode='w')
formatter = logging.Formatter('%(message)s')
errorLogFileHandler.setFormatter(formatter)
debugLogFileHandler.setFormatter(formatter)
logger.addHandler(debugLogFileHandler)
logger.addHandler(errorLogFileHandler)
debugLogFileHandler.addFilter(LevelFilter(logging.DEBUG))
errorLogFileHandler.addFilter(LevelFilter(logging.ERROR))
logger.setLevel(logging.DEBUG)
logger.disabled = True
参见logging/__init__.py
Python标准库。有类FileHandler
有方法__init__()
。
FileHandler.__init__
具有参数delay
,该参数使处理程序将实际的创建延迟StreamHandler
到发出第一条消息之前。您不使用此参数,并且open()
在实例化FileHandler
实例时以模式“ w”调用它。在将logger.disabled设置为True之前,请先执行此操作。
因此,如果以后不发出消息,则您仍然已经打开了空文件。
为避免这种情况,请创建带有参数延迟的文件处理程序,在其中传递True或实例化,然后仅在需要时才分配处理程序。logger.disabled
不会帮助您避免创建文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句