2017-05-12 80 views
0

我有一個每天運行的Python程序。我正在使用帶有FileHandler的logging模塊將日誌寫入文件。我希望每次運行的日誌都在自己的文件中,並帶有時間戳。但是,我想刪除舊文件(比如說> 3個月)以避免填滿磁盤。自動刪除舊的Python日誌文件

我已經看過了RotatingFileHandler和TimedRotatingFileHandler,但我不希望單個運行的日誌被分割到多個文件中,即使一次運行需要幾天。有沒有一個內置的方法呢?

+2

你可以在Python之外做這件事,只需使用Cron作業就可以每隔一段時間運行'find'(請參閱http://stackoverflow.com/a/13869000/3001761)。但是我很困惑*「我希望每一天的日誌都在他們自己的文件中」* vs *「我不希望單個運行的日誌被分割到多個文件中,即使單次運行需要天」*。 – jonrsharpe

+0

謝謝。不過,我正在尋找日誌模塊中的解決方案。爲了清晰我編輯過。 –

+0

@jonrsharpe cron很久以前就被棄用了,並且在許多任務中在osx中​​都不能很好地工作。 – JordanGS

回答

0

獲取日期/時間。有關如何獲取時間戳,請參閱此answer。如果該文件比當前日期早3個月。然後用

import os 
os.remove("filename.extension") 

保存此文件到py2exe刪除它,只是使用任何任務調度程序在啓動時運行此作業。

的Windows:打開運行命令,然後輸入外殼:啓動,然後將你的EXE在這裏。

在OSX:舊的方式曾經是創造一個cron工作,這在許多情況下不起作用在我的經驗,但仍然工作嘗試。蘋果推薦的新方法是CreatingLaunchdJobs。您也可以參考此topic以獲取更詳細的解釋。

+0

感謝您的回覆,但問題是關於日誌模塊本身支持這種功能的地方。創建一個單獨的程序來處理它很簡單。 –