关于log4j2无法打印服务器启动日志的问题

问题有两个。我新建了SpringMVC+log4j2的简单项目,确保了它能够跑起来,并尝试着重现了一下问题


第一个问题时是日志无法正确打印。


参考下图...
clipboard.png

蓝线以上都是jetty插件启动的日志,到蓝线为止启动完毕,这部分仅仅配了SpringMVC时就是这样,配了log4j2之后也没有任何变化;
蓝线以下都是Controller运行的日志,从蓝线开始用浏览器发送了一个请求,这部分跟我想象的完全一致,没有问题。

请问一下有方法或是配置能让蓝线以上的部分正确打印吗?

这是我的Maven依赖列表
clipboard.png

这是我的控制器的请求方法

clipboard.png

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <display-name>web-integration</display-name>

    <servlet>
        <servlet-name>spring-webmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springframework/dispatcherservlet-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-webmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    </listener>
    <filter>
        <filter-name>log4jServletFilter</filter-name>
        <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>log4jServletFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:springframework/application-context.xml
        </param-value>
    </context-param>
</web-app>

第二个问题是多个LOG依赖存在的问题。


关于spring-webmvc这个依赖,
我通过eclipse的Dependency Hierachy观察了一下它。
它内部有spring-core,而spring-core内部有commons-logging
这样一来,我感觉项目里面有两个关于LOG的facede依赖了,
分别是commons-logging和log4j2-api。这个冲突又该如何解决?

阅读 5.6k
1 个回答

log4j配置一下编码格式看看可以不可以
commons-logging和log4j2-api 这个不冲突的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题