玩转Spring MVC在spring中整合log4j

2022-07-09 10:15:15

在前边的基础上,本文主要总结一下如何在spring 中配置log4j,在本文末尾会给出完整项目的链接。

首先是web.xml中要新添加的代码:

<!-- 6. 配置log4j -->
	 <!--6.1 配置加载log4j.xml文件路径 --> 
	<context-param> 
	  <param-name>log4jConfigLocation</param-name> 
	  <param-value>/WEB-INF/classes/spring/log4jConfig.xml</param-value> 
	</context-param> 
	
	<!-- 6.2 配置log4j.xml变量 --> 
	<context-param> 
	  <param-name>rootLevel</param-name> 
	  <param-value>DEBUG</param-value> 
	</context-param> 
	
	<context-param> 
	  <param-name>loggingLevel</param-name> 
	  <param-value>INFO</param-value> 
	</context-param> 
	
	<!-- 6.3 配置log4j.xml监听器 --> 
	<listener> 
	<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
	</listener>

然后在src/config/spring文件夹下添加log4jConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "WEB-INF/classes/spring/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <!-- 该配置文件共定义了4个appender,即log日志的四个输出位置,关于appender详见 注4-->

  <!-- [控制台] 
  -->
  <appender name="console" class="org.apache.log4j.ConsoleAppender">  <!-- ConsoleAppender即表示日志输出方式为控制台 -->
     <param name="encoding" value="UTF-8" />    
     <param name="target" value="System.out" />   <!-- log日志的输出位置为系统输出,一般就是控制台 -->
     <!-- 关于layout中的参数详见 注5 -->
     <layout class="org.apache.log4j.PatternLayout"> 
       <param name="ConversionPattern" value="%-5p %c{2} - %m%n" />
     </layout>
  </appender>

  <!-- [公共Appender] -->
  <appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">   <!-- DailyRollingFileAppender即输出方式为每天产生一个日志文件 -->
     <param name="File" value="../logs/common-default.log" />   <!-- 日志文件输出路径-->
     <param name="Append" value="true" />  <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
     <param name="encoding" value="UTF-8" />
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /> <!--  每天的日志的名字,如:common-default.2015-02-06.log -->
     <layout class="org.apache.log4j.PatternLayout">
	   <param name="ConversionPattern" value="%d %-5p %c{2} - %m%n" />
     </layout>
   </appender>

   <!-- [错误日志  专用于收集特殊错误的文件] -->
   <appender name="ERROR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
     <param name="File" value="../logs/common-error.log" />
     <param name="Append" value="true" />
     <param name="encoding" value="UTF-8" />
     <param name="threshold" value="error" />  <!-- 日志输出级别为error,详见 注6 -->
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
     <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p %c{2} - %m%n" />
     </layout>
   </appender>

   <!-- [组件日志APPENDER] -->
   <appender name="COMPONENT-APPENDER"
class="org.apache.log4j.DailyRollingFileAppender">
     <param name="File" value="../logs/logistics-component.log" />
     <param name="Append" value="true" />
     <param name="encoding" value="utf-8" />
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
     <layout class="org.apache.log4j.PatternLayout">
	   <param name="ConversionPattern" value="%d %-5p %c{2} - %m%n" />  
     </layout>
   </appender>

   <!-- 用于定义logger的lever和所采用的appender,其中appender-ref必须为先前定义的 appenders的名称。
           那么log就会以appender所定义的输出格式来输出log。 -->
   <logger name="LOGISTICS-COMPONENT">
      <level value="${loggingLevel}" />
      <appender-ref ref="COMPONENT-APPENDER" />
      <appender-ref ref="ERROR-APPENDER" />
   </logger>

   <!-- Root Logger -->
   <!-- 1.root的作用是收集下面所有反馈上来的信息流并根据配置在root中appender进行输出,
                      只要你在looger中配置了additivity="false",就不会反馈到root中。 
        2.root标签为log的默认输出形式,如果一个类的log没有在loggers中明确指定其输出lever与格式,那么就会采用root中定义的格式-->
   <root>
       <level value="${rootLevel}"></level>
       <appender-ref ref="DEFAULT-APPENDER" />
       <appender-ref ref="ERROR-APPENDER" />
   </root>
</log4j:configuration>


接下来在将log4jjar包log4j-1.2.17\org\apache\log4j\xml下的log4j.dtd复制到src/config/spring下。

当然,人需要导入相应的包。

完整项目见:http://download.csdn.net/detail/u012116457/8431651



版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/dingxiaoyue/p/4931771.html

  • 作者:weixin_30325971
  • 原文链接:https://blog.csdn.net/weixin_30325971/article/details/95435786
    更新时间:2022-07-09 10:15:15