1

我有一个相当成熟的应用程序,总体上表现相当不错。我们遇到的一个问题是围绕我们的审计日志。目前我们正在使用一个自定义的生成服务器,它只通过 io:format 记录到一个文件中。这不是一个大问题,但不是性能最高的问题,更重要的是,它会淹没我们的磁盘。这些日志对于帮助诊断该系统中的问题非常重要,因为它通常只是一个很少需要任何干预的黑匣子。但是,当它确实存在问题时,99% 的时间它不是 sasl 日志将捕获的。所以,不幸的是,我们不能直接取消它们。

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

  • 已建立的框架要么是 Erlang/OTB 库的原生框架,要么得到社区的良好支持(例如 disk_logger、lager 等)
  • 非阻塞、异步 i/o
  • 相当容易实现(我不是新手,但除了换出日志实现之外,我还想解决其他优先级更高的问题。)
  • 我对文件记录器持开放态度,或者只是在某处写入数据库。
4

1 回答 1

0

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

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

于 2013-06-17T17:12:31.110 回答