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



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

即: -rw-r--r-- 1 用户 ID 0 五月 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中触发此工具,它会定期运行,这会生成许多此类文件,这些文件很烦人且检查起来很糟糕。 我知道我也可以有一些外部观察程序脚本来清除这些文件,但这不是一个明智的行为。

您可以通过将delay参数设置为文件处理程序的True来实现此目的:

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

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

如果延迟为 true,则文件打开将延迟到第一次调用 发出()。

最新更新