Erlang审计日志记录的最佳整体选项

时间:2013-06-16 20:27:45

标签: logging erlang

我有一个相当成熟的应用程序,通常表现相当不错。我们遇到问题的一个领域是我们的审计日志记录。目前我们使用的是自定义Gen服务器,只需通过io:format登录文件。这不是一个大问题,但不是最高性能的,更重要的是,它可以充斥我们的​​磁盘。这些日志对于帮助诊断系统中的问题非常重要,因为它通常只是一个很少需要任何干预的黑盒子。然而,当它确实存在问题时,99%的时间它不是sasl日志会捕获的东西。所以,不幸的是,我们不能随便取消它们。

所以,我的问题是关于erlang中普遍接受的最佳实践可能是什么,或者是否存在这样的“最佳”实践?我的标准如下:

  • 建立的框架既可以是Erlang / OTB库本地的,也可以是社区的良好支持(例如disk_logger,lager等)。
  • 非阻塞,非同步i / o
  • 相当容易实现(我不是新手,但我还有其他更优先的问题,而不是交换日志实现。)
  • 我对文件记录器开放或只是在某处写入db。

1 个答案:

答案 0 :(得分:0)

您可以查看lager的跟踪功能,您可以使用该功能根据元数据将日志重定向到特定的大型后端。我们通过RabbitMQ发送日志,并在另一端使用worker gen_servers将审计数据泵入数据库。有一个AMQP后端供啤酒使用。 RabbitMQ可以使用持久队列来帮助防止数据丢失。

Lager还支持可能更容易实现的syslog。