我有一个相当成熟的应用程序,总体上表现相当不错。我们遇到的一个问题是围绕我们的审计日志。目前我们正在使用一个自定义的生成服务器,它只通过 io:format 记录到一个文件中。这不是一个大问题,但不是性能最高的问题,更重要的是,它会淹没我们的磁盘。这些日志对于帮助诊断该系统中的问题非常重要,因为它通常只是一个很少需要任何干预的黑匣子。但是,当它确实存在问题时,99% 的时间它不是 sasl 日志将捕获的。所以,不幸的是,我们不能直接取消它们。
所以,我的问题是关于 erlang 中普遍接受的最佳实践可能是什么,或者是否存在这样的“最佳”实践?我的标准如下:
- 已建立的框架要么是 Erlang/OTB 库的原生框架,要么得到社区的良好支持(例如 disk_logger、lager 等)
- 非阻塞、异步 i/o
- 相当容易实现(我不是新手,但除了换出日志实现之外,我还想解决其他优先级更高的问题。)
- 我对文件记录器持开放态度,或者只是在某处写入数据库。