Python:清空日志文件

29

我正在开发一个客户端-服务器应用程序,需要在服务器上记录日志,因此我使用了 logging 模块。我希望在服务器上创建一个命令来清空文件。

我已经尝试使用 os.remove() 函数进行测试,但是在这之后,日志功能失效了。

您有什么想法吗?

谢谢。


1
这个日志文件是否由守护进程写入?您需要向守护进程发送信号,告诉它该日志文件已被删除,以便它可以关闭/重新打开日志文件句柄并开始使用新的日志文件。否则,它将继续写入旧文件,在所有文件句柄都关闭之前,旧文件仍将存在于某个位置。 - Marc B
3
logging.FileHandler 传递 mode="w" 参数。 - 0 _
3个回答

55

在清除文件时,截断文件可能比删除文件更好。最简单的解决方案是在清除函数中重新打开文件进行写操作并关闭它:

可能比较好的做法是截断文件而不是删除它。最简单的解决方案是在清除函数中重新打开文件进行写入,并关闭文件:

with open('yourlog.log', 'w'):
    pass

13

试着加一个'w'作为参数:

fh = logging.FileHandler('debug.log', mode='w')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)

这对我起作用了。


8
在 Steffen B 的答案基础上进行扩展:当使用 logging.basicConfig 函数时,可以将其用于覆盖重写文件而不是追加到该文件中:
logging.basicConfig(
        # specify the filename
        filename=<PATH TO THE FILE>,
        # If filename is specified, open the file in this mode. Defaults to 'a'.
        filemode="w",
    )

可以在“logging”模块的文档的专门部分中查找更多信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接