1台服务器2 Tomcat 1 docbase 1日志文件 - 此设置是否会导致日志丢失?

时间:2017-03-12 22:58:42

标签: java tomcat logging

背景

  • 1台服务器
  • 跑2 tomcat8
  • 为tomcat使用1个相同的docbase
  • 对tomcat使用1个相同的log4j2.properties

我发现一些事务日志随机丢失,使用相同的源从两个不同的应用程序编写单个日志文件是不是很糟糕?

例如,如果有60,000个API调用,则可能缺少大约5个调用或更多日志。

我可以告诉“有一个丢失的事务”,因为我可以从数据库中找到API请求/响应但没有该事务的日志。

1 个答案:

答案 0 :(得分:1)

我正在考虑更多关于此设置的信息, 这是一个坏主意,因为

  • 两个应用程序写入单个日志文件,会使用log4j破坏文件(参考:https://stackoverflow.com/a/23998294/1042903
  • 即使这不是问题,滚动文件仍然存在问题,两个不同的应用程序会竞争滚动单个日志文件。

最终,我必须将文档库分开并编写单独的日志文件,然后使用LogStash或其他一些日志框架在一个地方查看它们。

参考:有人要求Log4j2(https://issues.apache.org/jira/browse/LOG4J2-1828

采用谨慎的Logback模式

此后,

  1. 我更改了catalina.sh脚本以添加jvm选项,其中包含每个tomcat的不同目录或日志文件名
  2. 还使用$ {sys:option_name}更改log4j2.properties以访问jvm参数
  3. 重启每个tomcat以查看选项是否设置正确
  4. 参考:https://logging.apache.org/log4j/2.0/manual/lookups.html#JmxRuntimeInputArgumentsLookup