我使用 graylog 作为中央日志服务器,我使用 gelf log4j2-appender 将日志消息发送到 graylog。这工作正常。现在我创建了我的应用程序的 docker 映像,我可以将我的软件作为 docker 容器运行。
使用 docker 我还登录到标准输出(console-appender)以将应用程序日志输入到 docker(docker logs {containerId})。
现在我问自己是否可以在 gelf log4j2-appender 上备用,而使用 docker log-driver/plugin 代替 gelf。(见https://docs.docker.com/engine/admin/logging/overview/)
这里的最佳做法是什么?我认为使用 docker log 插件会将整个字符串消息发送到 graylog,而 graylog 需要从该字符串中提取元信息(因此我需要在日志消息中提供此元数据,例如 log_level)。这可能会导致 graylog 端消耗更多资源,并且也无法将 docker 配置为仅向 graylog 发送错误消息。这会导致更多的网络流量。使用 log4j2 gelf-appender,我可以在日志消息之外提供一些元数据,而无需将其包含在主日志消息中,并且在 graylog 端不需要提取。也可以通过 log_level 配置应该将哪些消息发送到 graylog。还是我错了?最好的解决方案是什么,或者将日志发送到 graylog 的每种方式的优缺点是什么?