0 0

spring加载log4j报错5

web.xml
<web-app  version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener><!--

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
--><context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring-config.xml</param-value>
</context-param>
</web-app>


log4j.xml
<?xml version='1.0' encoding='GBK' ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%7r] %6p - %30.30c - %m \n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="INFO"/>
        </filter>
    </appender>

<appender name="FILE-INFO" class="org.apache.log4j.DailyRollingFileAppender">
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<param name="Append" value="true" />
<!--
默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容
-->
<param name="file" value="d:/logs/monitor-info.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss SSS} |%m \n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
</filter>
</appender>
<!-- 自定义的bug -->
<appender name="Superman" class="com.bb.superman.order.OrderLog">

</appender>

<appender name="MLOG" class="com.aa.bb.util.mlog.MongoAppender">
<param name="address"
value="mongodb://127.0.0.1:27017/mlog?connecttimeoutms=30000" />
<param name="appName" value="test_mlog" />
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
</filter>
</appender>

<appender name="AsyncLog" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="128" />
<appender-ref ref="MLOG" />
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="Superman"/>
</appender>
    <root>
        <priority value="INFO"/>
        <appender-ref ref="AsyncLog"/>
    </root>
</log4j:configuration>


上面是配置文件列表,如果注释掉web.xml文件中的 <listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>  或者
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
其中的任意一个就可以正常的运行。
其中有的用到了自定义的日志输出器,想问一下改掉web.xml文件中的这两项和不修改有何区别?
2012年12月27日 11:10

1个答案 按时间排序 按投票排序

0 1

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
这个配置会通过ContextLoaderListener让spring去加载管理log4j实例。

<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
是通过Log4jConfigListener去加载log4j实例。

也就是说你加载了两次log4j,同一个类加载两次,相当于你配置了两个名字一样的bean,自然会出冲突,引发异常.

所以,只需要保留一个就可以了。

2012年12月27日 11:40

相关推荐

    log4j的作用及测试

    - `spring.jar`或`spring-web.jar`:这两个包中包含了log4j.properties的监听器,使得可以在不重启服务器的情况下实时更新日志配置文件。需要注意的是,如果只引入`spring-web.jar`,可能会导致程序报错,此时需要...

    spring源码缺失的jar包

    - `spring-core.jar`:Spring的核心库,包含了基本的工具类和反射、资源加载等基础功能。 - `spring-expression.jar`:用于在运行时解析表达式,常用于SpEL(Spring Expression Language)。 如果你在导入Spring...

    spring结合mongodb例子(maven java project)

    log4j:1.2.16 junit:4.12 commons-logging:1.1.1 maven:3 注意:spring的不同版本与mongodb结合可能会有问题,自测:spring4.2.1结合mongodb会报错:**springframework.core.context.**service 此外,例子同时涉及:...

    S2SH整合报错

    - 控制台还显示了关于log4j的日志警告信息,这表明log4j的配置存在问题,需要确保log4j的配置文件被正确加载。 通过上述步骤,一般可以解决S2SH整合时出现的此类问题。如果仍然遇到问题,建议检查项目配置的细节,...

    SpringBoot3 使用Druid报错,配置不生效,404报错

    同时,为了日志记录,还需要引入`spring-boot-starter-log4j2`依赖。这样,启动时就不会出现错误。 配置不生效通常是因为Druid配置类未正确地加载或设置。以下是一个示例的Druid配置类: ```java @Configuration ...

    ssm框架搭建

    此外,log4j和slf4j是日志管理包,可以在开发过程中用来记录日志信息。它们的版本也需要在pom.xml中指定: ```xml &lt;groupId&gt;org.slf4j &lt;artifactId&gt;slf4j-api ${slf4j.version} &lt;groupId&gt;log4j ...

    Java程序调试与错误收集--非代码引起的报错

    配置文件(如`application.properties`或`log4j.properties`等)的格式错误也可能导致程序无法正常启动。常见的错误包括格式不规范、语法错误等。确保所有的配置文件都符合规范是非常重要的。 - **检查方法:** - ...

    我整理的三大框架的常见问题和解决方案

    在处理日志配置问题时,如遇到`java.util.zip.ZipException`错误,通常意味着应用程序未能找到必要的配置文件,例如`log4j.property`。这可能是由于配置文件路径错误或文件缺失导致的。解决方法包括: 1. **确认...

    Spring Boot实现热部署的实例方法

    properties.put("spring.mvc.log-resolved-exception", "true"); properties.put("server.jsp-servlet.init-parameters.development", "true"); PROPERTIES = Collections.unmodifiableMap(properties); } } ```...

    springboot+layui 整合百度富文本编辑器ueditor入门使用教程(踩过的坑).doc

    ### 步骤4:整合到SpringBoot项目中 将ueditor整合到SpringBoot项目中需要按照以下步骤进行: * 在SpringBoot项目的静态资源目录下创建一个文件夹,并将解压后的ueditor文件夹整个放入其中。 * 在模板文件中添加...

    struts2中,在tomcat启动时候总是出现严重

    检查`log4j.properties`或`logging.properties`文件的配置,确保日志级别设置得足够详细,以便捕捉到错误信息。 7. **Action类问题**:如果Action类的定义、实现或注解存在问题,比如没有正确的返回类型,或者没有...

    互联网创意产品众筹平台

    问题一箩筐-关于打印日志log4j问题5 y: }- e: Z$ p6 X9 d0 A9 @ │ 7.问题一箩筐-生产环境模拟, y; v4 Z% p0 }& I+ X* B) t# j │ 8.问题一箩筐-相对路径和绝对路径 │ 9.问题一箩筐-自定义监听器,解决上下文路径...

    单点登录源码

    Log4J | 日志组件 | [http://logging.apache.org/log4j/1.2/](http://logging.apache.org/log4j/1.2/) Swagger2 | 接口测试框架 | [http://swagger.io/](http://swagger.io/) sequence | 分布式高效ID生产 | ...

    java微信公众号MVC开发框架

    如果没有配置encodingAESKey,那么是不能处理加密消息的,如果有log4j的配置文件,启动阶段会给出告警信息的。 同一个公众号可以配置多个@Weixin注解控制器类,其中只需要一个有其他4项配置就可以了,如果多个控制...

    Logback动态修改日志级别的方法

    loggerContext.getLogger("org.springframework").setLevel(Level.valueOf(logLevel)); } catch (Exception e) { logger.error("动态修改日志级别出错", e); return "fail"; } return "success"; } } ``` 在...

Global site tag (gtag.js) - Google Analytics