第二章 zlog 无法完成的事
zlog 的目标是成为一个简单、快速的应用程序日志库。它并不支持以下功能:
- 通过网络将日志发送到其他机器
- 将日志保存到数据库
- 解析日志内容和过滤日志
原因很明显:日志库是由应用程序调用的,因此日志库消耗的时间也被算作应用程序的时间。而数据库插入或日志内容解析是耗时操作,这会减慢应用程序的速度。这类操作应该在不同的进程或机器上进行。
如果你需要这些功能,推荐使用 rsyslog、zLogFabric 或 Logstash。它们有独立的进程来接收来自其他进程或机器的日志,并解析和存储日志。这样这些功能就与用户的应用程序分离开来。
目前 [User-defined-Output] 这个功能已经被 zlog 支持。你只需实现一个输出函数,将日志传输到其他进程或机器。类别匹配和日志生成的工作仍然由 zlog 库完成。
一种可行的方法是编写一个 zlog-redis 客户端。在用户定义的输出中,它将日志发送到本地或远程的 redis,然后其他进程可以从 redis 中读取日志并写入磁盘。你觉得这个想法如何?我很乐意与你讨论这个问题。