我正在使用Spring MVC 4.2.5.RELEASE
开发Maven Web应用程序,我正在使用Netbeans
IDE和GlassFishSErver 4.1
,我想使用log4j 1.2.17
,所以我创建了一个log4j.properties文件,但似乎找不到我的属性文件,因为我收到以下错误:
log4j:WARN No appenders could be found for logger (org.springframework.web.servlet.DispatcherServlet).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我使用java注解配置了Spring应用程序,下面是我的配置
@Configuration
@EnableWebMvc
@ComponentScan({"config", "controllers"})
public class ConfigMVC extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/");
}
@Bean
public UrlBasedViewResolver setupViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
}
这是我的WebInitializer
public class WebInicializar implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(ConfigMVC.class);
ctx.setServletContext(servletContext);
Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.addMapping("/");
servlet.setLoadOnStartup(1);
servlet.setInitParameter("throwExceptionIfNoHandlerFound", "true");
}
}
这是我的控制器
@Controller
public class HomeController {
private static final Logger logger = Logger.getLogger(HomeController.class);
@RequestMapping(value = "/myPage", method = RequestMethod.GET)
public String paginaSinMap(ModelMap map) {
logger.info("This is an info log entry");
logger.error("This is an error log entry");
return "myPage";
}
这是我的log4j.properties
# LOG4J configuration
log4j.rootLogger=INFO, Appender1, Appender2
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n
log4j.appender.Appender2=org.apache.log4j.FileAppender
log4j.appender.Appender2.File=D:/Logs/SpringMVC.log
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n
我把这个www.example.com放在log4j.properties我的资源文件夹中,这是我的项目结构
编辑:我没有提到我的项目是一个使用Spring的Maven Web应用程序,这是我的项目结构
MyWebAppProjectName
--Web Pages
--WEB-INF
--jsp
index.jsp
--resources
--js
js.js
--css
site.css
log4j.properties
--Source Packages
--config
ConfigMVC.java
WebInitializaer.java
--controllers
HomeController.java
--Test Packages
--Other Resources
--src/main/resources
--default package
--Dependencies
--Java Dependencies
--Project FIles
因此,我将www.example.com放在log4j.propertiesOther Resources/src/main/resources
中,当我这样做时,Netbeans创建了一个default Package
,里面的文件就像default package/log4j-properties
一样,它工作了,日志开始出现在输出中,一切都按预期正常工作。
我尝试在路径src/main/resources
中创建一个名为Log4jResource
的包,但是当我这样做时,它停止工作,并且错误再次显示,因此有一种方法可以将此文件放入该文件夹中,而不必使用NetBeans在我将文件夹放入该文件夹时创建的default package
。
我尝试重构重命名默认包,但它显示此错误Module JPA Refactoring threw java.lang.NullPointerException. Please report a bug against JPA Refactoring module and attach your var/log/messages.log.
我的最终项目结构如下所示
MyWebAppProjectName
--Web Pages
--WEB-INF
--jsp
index.jsp
--resources
--js
js.js
--css
site.css
log4j.properties
--Source Packages
--config
ConfigMVC.java
WebInitializaer.java
--controllers
HomeController.java
--Test Packages
--Other Resources
--src/main/resources
--default package
--log4j.properties
--Dependencies
--Java Dependencies
--Project FIles
2条答案
按热度按时间368yc8dk1#
尝试将log4j.properties文件移到./WEB-INF/中。您的Spring资源处理程序当然可以在./WEB-INF/resources/中查找。我不相信log4j知道任何关于Spring的信息,也不关心Spring。Log4j将在类路径中查找属性文件,除非您明确告诉log4j在其他地方查找。
我想现在,你只是告诉Spring去哪里找东西。
apeeds0o2#
我认为是www.example.com文件的无效位置log4j.properties打破了您的预期。