我在Go中有一個小型項目,它們通過tcp接收文本行進行處理。然而,爲確保健壯性,我希望創建某種日誌,以便在斷電情況下不會丟失任何內容(例如,我的應用收到一幀數據,但尚未處理)。在golang中製作日誌文件
我已經搜索了應該如何實現日誌文件的任何指南,但搜索結果受到Oracle RDBMS文檔等的嚴重污染。
我的收穫是這樣的:在收到一行後立即將它寫入帶有「未處理標誌」的文件。處理完成後,更新文件以便清除該標誌,並打開覆蓋。在該標誌被清除的同時,向數據發送者發送「已處理的確認」。也許最容易處理期刊中固定大小的「插槽」,以確保我可以重複使用已釋放的插槽,而不是擁有不斷增加的文件並保留未使用插槽的「空閒列表」。
是否有任何「最佳實踐」在自定義代碼中實現這樣的文件,例如關於文件結構,填充和鎖定的文件? Go有沒有擔心這樣做,因爲它是跨平臺的,而不是使用本地文件系統API?
關於需要多少一致性,是否可以在錯誤情況下兩次處理消息等等,會影響針對這種情況的最佳期刊設計有很多細節。沒有更多的細節,很難提供有用的答案。 'os'包提供了跨平臺的'sync'和'rename'調用,它們應該足以實現大多數期刊。 – Evan