我在我的应用程序中使用了嵌入式Jetty,并且我已经配置了一个war deploy文件夹,如下所示。
// === jetty-deploy.xml ===
DeploymentManager deployer = new DeploymentManager();
deployer.setContexts(contexts);
deployer.setContextAttribute(
"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
".*/servlet-api-[^/]*\\.jar$");
WebAppProvider webapp_provider = new WebAppProvider();
webapp_provider.setMonitoredDirName("jetty_base/webapps");
//webapp_provider.setDefaultsDescriptor("jetty_base/webapps/webdefault.xml");
webapp_provider.setScanInterval(1);
webapp_provider.setExtractWars(true);
webapp_provider.setConfigurationManager(new PropertiesConfigurationManager());
deployer.addAppProvider(webapp_provider);
server.addBean(deployer);
org.eclipse.jetty.util.log.Log.setLog(new org.eclipse.jetty.util.log.StdErrLog());
//Log.setLog(new Slf4jLog());
当我使用标准码头分发(jetty-distribution-9.3.6.v20151106)部署war文件时,我可以在* .stderrout.log文件中获取日志。
但我遇到的问题是,当我使用上面的嵌入式码头时,我无法获取日志。 我为Log.setLog
尝试了StdErrLog和Slf4jLog在我的war文件中有一些带有logback的日志。以下行从标准分发的日志文件中提取
INFO in ch.qos.logback.classic.LoggerContext[default]
答案 0 :(得分:2)
Runtime.gc()
文件的创建是一个关于码头分布行为的工件,它不适合embedded-jetty,不试图实现最终目标。
至于配置日志记录,这需要尽早发生,就像很早就可以实现它一样。如果你能够在Jetty中实例化任何理想的东西之前就能实现它。
尝试的一些选项(仅尝试以下1项,而不是它们的组合):
默认情况下,类路径中存在*.stderrlog.log
将导致jetty自动配置为slf4j(在您的案例中将使用logback作为其实现)
不要在任何地方打电话给slf4j-api.jar
,让码头做其事。
Log.setLog()
尝试将此静态块放在主类中。
Log.setLog()
请勿在其他任何地方致电static {
org.eclipse.jetty.util.log.Log.setLog(new Slf4jLog());
}
。
Log.setLog()
添加到类路径在类路径中创建一个jetty-logging.properties
文件(jar文件的根目录是个好地方),添加以下行:
jetty-logging.properties