我正在编写一个服务应用程序,它将从多个来源读取日志条目,将它们解析为更简单的格式并允许对其进行分析和统计。最重要的来源将被记录下来。
我知道像这样的命令journalctl -o json -f
会给我我需要的所有数据。我可以将其作为子进程打开并从其标准输出流中读取。另一个--since "..."
允许我从最后收到的条目赶上,例如在重新启动或服务重新启动之后。
但是这个性能怎么样。是否建议将journalctl
命令用于此类后台和永久监控活动?它会消耗太多内存、磁盘 I/O 或运行时以使journalctl
实例“永远”在后台运行吗?还是我应该在日志中找到更直接的 API?我还阅读了有关 systemd-journal-upload 的信息,但我不完全确定它是否可以在重新启动后赶上。它还通过具有自己的协议开销的 HTTP 发送所有数据,尽管我的服务将使用 ASP.NET Core 编写,因此它已经可以接受 HTTP 请求。
如果相关的话,我的目标是 Ubuntu Server 20.04 并从 .NET Core 3.1 调用。Journald 配置为使用持久存储。一切都在本地运行;现在我没有从远程机器收集日志。