【发布时间】:2018-09-29 00:36:40
【问题描述】:
我们有基于 Java 的应用程序 [我们正在使用 SpringBoot 和 Dropwizard],遵循微服务架构,在 K8s 集群上运行。
我们正在使用 log4j 打印出日志消息。我们已将 log4j 配置为将日志写入文件。我们发现访问这些日志非常困难[目前我们执行到 docker 容器中并查看日志]。我正在做一些研究,许多人建议设置 log4j 将日志写入标准输出流或控制台而不是文件。但我们希望将日志保存更长时间[更像是长期存档]。
因此,看起来标准是 EFK 或 ELK [开源选项]。我只是想了解为了使用 log4j 为应用程序提供可靠的日志记录,需要遵循哪些最佳实践/配置。部署和配置 EFK 或 ELK 是一个不错的选择吗?如果是这样,谁能告诉我应该如何修改我的 log4j 属性以将日志发送到堆栈?
【问题讨论】:
-
通常您只需写入标准输出/控制台,然后在应用程序之外(在 docker 环境中甚至在容器之外)捕获并保存它。而kubernetes.io/docs/concepts/cluster-administration/logging 听起来好像有一些东西适合 Kubernetes,这比执行到容器中检查本地文件要方便得多。你可以教你所有的应用程序向 elk 发送数据(例如stackoverflow.com/questions/44199174/…),但它实际上更简单,更通用
标签: java kubernetes log4j