gpt4 book ai didi

python - 如果 python 中没有有效的解析输出,如何避免创建空的记录器文件?

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:19 24 4
gpt4 key购买 nike

我有一个 python 脚本来运行日志解析,它会定期扫描磁盘上的一些日志文件并尝试解析它们。但是,如果文件不可解析或没有数据,我的代码应该退出以进行解析。问题是即使没有有效数据,我的脚本也会生成一个空日志文件。

即:-rw-r--r-- 1 用户 userid 0 May 28 08:10 parse.py_20190528_08_10_03.log

我猜这可能是因为在我的脚本启动时记录器已经初始化。我想知道的是是否有其他方法可以通过设置来避免这种情况?我试着检查了几个地方,但不知道如何。

这是我脚本中的导入记录器:

import logger
logger = logging.getLogger('upgrade.py')
formatter=logging.Formatter("%(asctime)s - %(levelname)-8s %(message)s")
log_filename = '{}/{}_{}.log'.format(os.getcwd(),os.path.basename(sys.argv[0]),time.strftime("%Y%m%d_%H_%M_%S"))
fh = logging.FileHandler(log_filename)
fh.setLevel(logging.INFO)
fh.setFormatter(formatter)
logger.addHandler(fh)

在我的解析函数之后,我使用下面来确保它没有在没有有效数据的情况下转储数据。

   main()
......parsing....
if len(outputs) != 0:
logger.info(outputs)
.......
.... output filtering.....
if len(out_list) == 0:
exit(0)
.....

但是,这仍然不能阻止它在我的目录中创建 0 kb 文件。我在 crontab 中触发这个工具,它会定期运行,生成很多这样的文件,这些文件很烦人,也不好检查。我知道我也可以使用一些外部观察程序脚本来清除这些文件,但这不是明智之举。

最佳答案

您可以通过将 FileHandler 的 delay 参数设置为 True 来实现此目的:

fh = logging.FileHandler(log_filename, delay=True)

来自文档: https://docs.python.org/3/library/logging.handlers.html#logging.FileHandler

If delay is true, then file opening is deferred until the first call to emit().

关于python - 如果 python 中没有有效的解析输出,如何避免创建空的记录器文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com