我不會擔心修改我已經寫過的數據,我只會遵循在某個時間點啓動新日誌文件的悠久傳統,無論是當前日誌文件達到一定大小還是時間表(每小時,每天或其他)。
只需將當前日誌文件從xyzzy.log
重命名爲xxyyz-YYYYMMDDHHMMSS.log
,然後啓動xyzzy.log
的全新副本。
這也爲您在維護日誌的完整審覈和保留磁盤空間之間給出了體面的權衡。您可以設置過程來刪除超過30天的日誌文件,或者將聚合大小保持在某個閾值以下,或者甚至將舊日誌移出到輔助存儲區域。
這些程序甚至不必是你的程序的一部分 - 我過去只是有一個計劃的任務,清理舊的日誌文件,一個任務與程序本身沒有共享的任務,除了腳本所在的目錄。
這可能是完成第三方產品(這不總是可行)的最簡單的方法,而且由於日誌文件幾乎總是針對程序員而不是用戶,所以命名標準不應該是'不要太繁重。
一個非常簡單的解決辦法,我在過去的(得承認Linux)的使用是真正不用擔心重命名的。只需使用日誌功能使用當前日期打開文件,並且記得日期是什麼。每次您在此之後調用日誌功能時,請檢查日期是否已更改,如果是,則打開新的日誌文件以供日後記錄。通過程序很少的努力,每天給你一個日誌文件。
然後,我剛剛使用find -mtime
刪除那些超過一定年齡的腳本。
關於建議使用外部的日誌庫,我的應用程序將是少於1000行左右,因此包含一個至少爲10倍大小的第三方庫似乎很愚蠢,只是將一行文本寫入文件,然後在超過一定大小時截斷。我明白重新使用經過良好測試的代碼是最好的方式,而不是重新發明輪子,但我不想讓應用程序膨脹太多。 – Richard 2010-10-29 12:30:06