在部署在Tomcat上的应用程序中,有一个如下类:
import java.util.logging.Level;
import java.util.logging.Logger;
public abstract class ServiceEndpointApplication extends Application {
final static String LOGGER_NAME = "test";
static {
System.out.println("static init start");
Logger logger = Logger.getLogger(LOGGER_NAME);
logger.setLevel(Level.OFF);
System.out.println("static init end");
}
...
}
就在启动Tomcat之后,我使用JMeter发送了50个请求(50个线程,1个启动周期,1个循环)。
然后tail -f catalina.out
显示以下日志:
Nov 06, 2018 1:36:57 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 64126 ms
static init start
static init end
static init end
static init end
显示两次!
此行为发生的可能性约为10%。
我的问题:
这种奇怪行为的可能原因是什么?
环境:
Java
Tomcat 7.0.59
答案 0 :(得分:1)
我找到了原因。这是由-f
命令的tail
选项引起的。
我转载了这种行为:
$ tail -f catalina.out
...
Nov 06, 2018 7:18:17 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 62601 ms
static init start
static init end
static init end
然后我没有任何选择地运行了tail
:
$ tail catalina.out
...
Nov 06, 2018 7:18:17 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 62601 ms
static init start
static init end