按需清理日志文件?

时间:2017-10-18 22:17:17

标签: python logging

我想按需清理日志文件。 我有运行批处理的应用程序..我想在每个批处理运行的开头清理日志文件。

是否有"记录"方法或我必须执行shell命令。 shell命令是否会干扰文件描述符" logging"模块成立。

覆盖模式不起作用,我想按需进行。

1 个答案:

答案 0 :(得分:0)

这不是开箱即用的,因为它是一个相当不寻常的(以至于不会说"奇怪的")用例。原木不应该被立即删除和覆盖 - 它们以这种方式无用。你可能最好转动日志:

h = logging.handlers.RotatingFileHandler(<...>)
<logger>.addHandler(h)

<...>

for <batch> in <batches>:
   <...>
   h.doRollover()

也就是说,您通过非公共方法FileHandler请求 ,这通常会在处理程序的初始化时打开日志:

h = logging.FileHandler(mode='w', <...>)   #or use whatever else creates a FileHandler, e.g. basicConfig()

<...>
h.close() #needed because it prevents side effects from the old descriptor
          #(e.g. garbage from unflushed writes, sharing violation)
h._open()