我使用graylog作爲中央日誌記錄服務器,我使用gelf log4j2-appender將日誌消息發送給graylog。這工作正常。現在我創建了我的應用程序的碼頭圖像,並且能夠將我的軟件作爲碼頭容器運行。從Docker容器中運行的JVM應用程序發送日誌到graylog的最佳實踐是什麼?
使用docker我也登錄到stdout(console-appender)來獲取應用程序日誌到docker(docker logs {containerId})中。
現在我問自己,我可以在gelf log4j2-appender上騰出空間,並使用docker log-driver/plugin代替gelf。 (見https://docs.docker.com/engine/admin/logging/overview/)
這裏的最佳做法是什麼?我認爲使用docker日誌插件會將整個字符串消息發送到graylog,並且graylog需要從該字符串中提取元信息(所以我需要在日誌消息中提供此元數據,例如log_level)。這可能會導致更多的資源消耗在graylog端,也不可能配置泊塢窗只發送錯誤消息到graylog。這導致更多的網絡流量。使用log4j2 gelf-appender,我可以在日誌消息中提供一些額外的元數據,而不會將其包含在主日誌消息中,並且在graylog一側不需要提取。也可以配置哪些消息應該通過log_level發送給graylog。還是我錯了?什麼是最好的解決方案,或者每種向graylog發送日誌的方式有哪些優缺點?