logging模块 日志文件 程序运行时报文件正在被使用

背景

公司的自研框架,使用logging模块承担日志功能。之前的做法是将所有线程和进程的日志都打印在一个文件里,且框架每次运行时都将用open函数w模式截断日志文件,保证每次运行日志的独立性。
后面根据使用场景,需要分线程、进程打印日志,即每一个线程\进程的日志都使用不同的日志文件打印。此时open函数截断日志文件的模式已经不可用,在每次运行前,需要将之前产生的日志文件删除。
由于框架有一个UI界面,在UI上重复运行框架,到删除日志文件的代码时,会报日志文件正在使用,无法删除。

分析

logging模块文件处理方式为:保持日志文件一直打开的状态,所以日志文件才被一直占用。

解决方法

在框架运行结束前执行:logging.shutdown()。即可关闭所有记录器,也就使得日志文件被关闭。
logging.shutdown()
Informs the logging system to perform an orderly shutdown by flushing and closing all handlers. This should
be called at application exit and no further use of the logging system should be made after this call.
When the logging module is imported, it registers this function as an exit handler (see atexit), so normally
there’s no need to do that manually.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值