2013-10-26 63 views
1

我希望啓動Python程序的多個實例(進程),並且我希望它們中的每一個都寫入它們自己的日誌文件。Python TimedRotatingFileHandler - 日誌中的PID文件名 - 最佳方法

這些進程將每天至少重新啓動一次。

所以我到了下面的代碼。

logHandler = TimedRotatingFileHandler(os.path.join(os.path.dirname(sys.argv[0]),'logs/LogFile_'+str(os.getpid())+'.log'),when="midnight", backupCount=7) 
  1. 將這個代碼保持7個備份每個PID?
  2. 有沒有更好的方法來分割這個,這樣我的磁盤沒有填滿無用的 文件?假設過去幾個月的過程PID可能是唯一的。
  3. 有沒有更好的方法來做到這一點?

我最想擁有的是僅保留1周的日誌。這可以使用TimeRotatingFileHander完成,而不必編寫單獨的清除/刪除腳本?

+0

嘿!我的答案是否真的解決了你的問題?讓我知道如果我錯過了這個標記 - 沒有接受就像一個鬆散的線程:) – jtmoulia

回答

3
  1. 是的,這將爲每個唯一的日誌路徑保留7次備份或者幾周的日誌。
  2. 旋轉文件處理程序是對日誌進行限制的正確方法。
  3. 正如我所說,旋轉文件處理程序是正確的方法。我想你可以使用RotatingFileHandler,但是當日志達到一個大小而不是在某個特定的時間時,該日誌就會旋轉,因此它不允許你指定一週的日誌。

我對你如何保持一個給定過程常量的pid感到有點困惑,因爲'過程至少每天會重新啓動一次'。更強有力地保證每個進程具有唯一的日誌路徑,就是將其明確地提供爲參數,例如, python script --log-file="$(pwd)/logs/LogFileProcX.log"

相關問題