我在 Go 中有一个小项目,它通过 tcp 接收文本行以进行处理。但是,为了确保稳健性,我想创建某种日志,以便在电源故障的情况下不会丢失任何内容(例如,我的应用程序接收到一帧数据,但尚未处理)。
我已经在 Google 上搜索了有关如何实现日志文件的任何指南,但是搜索结果受到 Oracle RDBMS 文档等的严重污染。
我的想法是这样的:收到一行后立即将其写入带有“未处理标志”的文件。处理后,更新文件以清除此标志,打开覆盖。在清除该标志的同时,向数据发送方发送一个“已处理的确认”。在日志中处理固定大小的“插槽”也许是最简单的方法,以确保我可以重用已释放的插槽,而不是拥有一个不断增加的文件并维护未使用插槽的“空闲列表”。
在自定义代码中实现此类文件是否有任何“最佳实践”,关于文件结构、填充和锁定的 ige?在 Go 中这样做是否有任何顾虑,因为它是跨平台的,而不是使用本机文件系统 API?