spring mvc中log4j的配置与使用

时间:2021-04-25 21:53:37

原文地址:http://rockelixir.iteye.com/blog/1902352

如果使用spring插件创建一个spring template project,它会默认带log4j,只要改下log4j的配置就可以使用了,如果自己创建的project,就要加载下log4f的包了,使用步骤如下
1.pom.xml加入log4j的依赖包
  

  1. <!-- Logging -->  
  2.   <dependency>  
  3.   <groupId>org.slf4j</groupId>  
  4.   <artifactId>slf4j-api</artifactId>  
  5.   <version>1.6.6</version>  
  6.   </dependency>  
  7.   <dependency>  
  8.   <groupId>org.slf4j</groupId>  
  9.   <artifactId>jcl-over-slf4j</artifactId>  
  10.   <version>1.6.6</version>  
  11.   <scope>runtime</scope>  
  12.   </dependency>  
  13.   <dependency>  
  14.   <groupId>org.slf4j</groupId>  
  15.   <artifactId>slf4j-log4j12</artifactId>  
  16.   <version>1.6.6</version>  
  17.   <scope>runtime</scope>  
  18.   </dependency>  
2.在src/main/resources下创建log4j.xml
  1. <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">  
  2.     <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  3.     <!-- Appenders -->  
  4.     <appender name="console" class="org.apache.log4j.ConsoleAppender">  
  5.     <param name="Target" value="System.out" />  
  6.     <layout class="org.apache.log4j.PatternLayout">  
  7.     <param name="ConversionPattern" value="%d [%t] %-5p: %c - %m%n" />  
  8.     </layout>  
  9.     </appender>  
  10.     <appender name="file" class="org.apache.log4j.DailyRollingFileAppender">  
  11.     <param name="File" value="${log.dir}/com.xxx.account.log"/>  
  12.     <param name="Append" value="true"/>  
  13.     <param name="DatePattern" value=".yyyy-MM-dd" />  
  14.     <layout class="org.apache.log4j.PatternLayout">  
  15.     <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>  
  16.     </layout>  
  17.     </appender>  
  18.     <appender name="account-error" class="org.apache.log4j.FileAppender">  
  19.     <param name="File" value="${log.dir}/account-error.log"/>  
  20.     <param name="Append" value="true"/>  
  21.     <layout class="org.apache.log4j.PatternLayout">  
  22.     <param name="ConversionPattern" value="%d|[%t]|%-5p|%c| - %m%n"/>  
  23.     </layout>  
  24.     </appender>  
  25.     <!-- Application Loggers -->  
  26.     <logger name="com.xxx.account">  
  27.     <level value="info" />  
  28.     </logger>  
  29.     <logger name="com.xxx.account-error">  
  30.     <level value="error" />  
  31.     <appender-ref ref="${log.appender}" />  
  32.     <appender-ref ref="account-error" />  
  33.     </logger>  
  34.     <!-- Root Logger -->  
  35.     <root>  
  36.     <level value="info"></level>  
  37.     <appender-ref ref="${log.appender}" />  
  38.     </root>  
  39.     </log4j:configuration>  

log4j.xml中定义了3个appender,就是log输出的位置,一个是控制台,两个是文件,但有一个文件account-error.log是专用于收集特殊错误的文件,可以定义多个分别为不同的场景使用,log4j的相关定义如下:
  1. (1)。 输出方式appender一般有5种:  
  2.    org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)  
  3.    org.apache.log4j.ConsoleAppender (控制台)  
  4.    org.apache.log4j.FileAppender (文件)  
  5.    org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)  
  6.    org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)  
  7.  (2)。 日记记录的优先级priority,优先级由高到低分为  
  8.    OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL.  
  9.    Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。  
  10.   (3)。 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):  
  11.    %c        输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)  
  12.    %d       输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}  
  13.    %l        输出日志事件发生位置,包括类目名、发生线程,在代码中的行数  
  14.    %n       换行符  
  15.    %m      输出代码指定信息,如info("message"),输出message  
  16.    %p       输出优先级,即 FATAL ,ERROR 等  
  17.    %r        输出从启动到显示该log信息所耗费的毫秒数  
  18.    %t        输出产生该日志事件的线程名  
3.在controller中使用log4j
  1. private static final Logger logger = LoggerFactory.getLogger("com.xxx.account-error");  
  2.   logger.error("test log");  
  3.   这样就记录了一条log到了account-error.log中,同时也写了一条log到公用的log文件com.xxx.account.log中,如果只想写到公用log文件中,在log初始化的时候使用class的名称即可  

  1. private static final Logger logger = LoggerFactory.getLogger("xxx.class");  
  2.   xxx就是当前class的名称  

转载自 http://www.softfz.com/jzx/6499/