2012-04-19 127 views
2

我想使用logrotate來旋轉多進程python服務的日誌。通常使用以下哪種組合(正確且安全)?Python日誌記錄 - logrotate選項

  • WatchedFileHandler +日誌輪播與創建選項

    OR

  • 文件處理器+日誌輪播與copytruncate選項

選項-1似乎在OpenStack的新星和一目瞭然的項目使用。我還沒有看到選項-2被使用。選項-2是否按預期工作?這些方法在用於多進程應用程序時是否存在任何缺陷?

+0

Re。多個進程共享文件 - 請參閱文檔以獲取更多信息:http://docs.python.org/howto/logging-cookbook.html#logging-to-a-single-file-from-multiple-processes-無論您是否使用logrotate,這樣做可能會導致意外的行爲。 – 2012-04-20 18:32:02

回答

0

我建議使用Python自己的日誌輪換來獲得最佳集成。唯一的缺點是你有一個額外的地方來配置細節。

+0

RotatingFileHandler不能用於共享相同文件的多個進程。我不想使用網絡記錄器,如SocketFileHandler和SyslogFileHandler。 – Anoop 2012-04-20 04:47:14

2

由於WatchedFileHandler是專門爲外部旋轉工具使用的,如logrotate,我建議使用它(選項1)。爲什麼你認爲你需要選項2?

在每個進程寫入其自己的日誌的多進程環境中,應該沒有任何問題。但是,進程不應共享日誌文件。

+0

關於選項2,我試圖瞭解這些方法的優缺點(特別是copytruncate)。共享相同日誌文件的多個進程可能會發生什麼問題?不是像redis這樣的服務,在同一個盒子上運行同一個redis的多個實例使用這種方法? (如果我錯了,請糾正我) – Anoop 2012-04-20 04:48:19