如何在配置了Java注解并使用www.example.com文件的Spring Mvc应用程序中配置log4jlog4j.properties

dy1byipe  于 2022-11-06  发布在  Java
关注(0)|答案(2)|浏览(114)

我正在使用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
368yc8dk

368yc8dk1#

尝试将log4j.properties文件移到./WEB-INF/中。您的Spring资源处理程序当然可以在./WEB-INF/resources/中查找。我不相信log4j知道任何关于Spring的信息,也不关心Spring。Log4j将在类路径中查找属性文件,除非您明确告诉log4j在其他地方查找。
我想现在,你只是告诉Spring去哪里找东西。

apeeds0o

apeeds0o2#

我认为是www.example.com文件的无效位置log4j.properties打破了您的预期。

相关问题