我在我的应用程序中使用Logback。到目前为止,我已经有了一个类实现WebApplicationInitializer,以便我的应用程序在没有web.xml的情况下启动。到目前为止一切正常,在我的控制台中可以看到日志记录。如果我更改了这个,以便我的类扩展AbstractAnnotationConfigDispatcherServletInitializer并且不再直接实现WebApplicationInitializer,则日志记录似乎完全关闭。我的控制台中没有任何记录。
我已经玩过它以确保,在两个实现之间切换并且它始终如此表现。有人见过这个吗?我不知道它会如何影响我的日志记录。
这是我的WebApplicationInitializer实现
public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(Application.class);
servletContext.addListener(new ContextLoaderListener(ctx));
ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("/*");
FilterRegistration.Dynamic hiddenHttpMethodFilter = servletContext.addFilter("hiddenHttpMethodFilter", HiddenHttpMethodFilter.class);
hiddenHttpMethodFilter.addMappingForUrlPatterns(null, false, "/*");
}
}
这是扩展AbstractAnnotationConfigDispatcherServletInitializer的版本
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {Application.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/*"};
}
@Override
protected Filter[] getServletFilters() {
return new Filter[] {new HiddenHttpMethodFilter()};
}
}
在这两种情况下,应用程序运行正常,但使用我的应用程序初始化程序的第二个版本,我没有记录。