我有一个相当成熟的应用程序,通常表现相当不错。我们遇到问题的一个领域是我们的审计日志记录。目前我们使用的是自定义Gen服务器,只需通过io:format登录文件。这不是一个大问题,但不是最高性能的,更重要的是,它可以充斥我们的磁盘。这些日志对于帮助诊断系统中的问题非常重要,因为它通常只是一个很少需要任何干预的黑盒子。然而,当它确实存在问题时,99%的时间它不是sasl日志会捕获的东西。所以,不幸的是,我们不能随便取消它们。
所以,我的问题是关于erlang中普遍接受的最佳实践可能是什么,或者是否存在这样的“最佳”实践?我的标准如下:
答案 0 :(得分:0)
您可以查看lager的跟踪功能,您可以使用该功能根据元数据将日志重定向到特定的大型后端。我们通过RabbitMQ发送日志,并在另一端使用worker gen_servers将审计数据泵入数据库。有一个AMQP后端供啤酒使用。 RabbitMQ可以使用持久队列来帮助防止数据丢失。
Lager还支持可能更容易实现的syslog。