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

发布于 2022-09-05 07:25:41 字数 3925 浏览 22 评论 0

问题有两个。我新建了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。这个冲突又该如何解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉世弥音 2022-09-12 07:25:41

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文