java学习笔记9 - Spring mvc中log4j的配置与使用

来源:互联网 发布:网络信息发展趋势 编辑:程序博客网 时间:2024/05/16 19:13

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

1.pom.xml加入log4j的依赖包

<!-- Logging --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.6.6</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>1.6.6</version><scope>runtime</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.6</version><scope>runtime</scope></dependency>
2.在src/main/resources下创建log4j.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><!-- Appenders --><appender name="console" class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p: %c - %m%n" /></layout></appender><appender name="file" class="org.apache.log4j.DailyRollingFileAppender">      <param name="File" value="${log.dir}/com.xxx.account.log"/>      <param name="Append" value="true"/>      <param name="DatePattern" value=".yyyy-MM-dd" />      <layout class="org.apache.log4j.PatternLayout">          <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>      </layout>   </appender>      <appender name="account-error" class="org.apache.log4j.FileAppender">      <param name="File" value="${log.dir}/account-error.log"/>      <param name="Append" value="true"/>      <layout class="org.apache.log4j.PatternLayout">          <param name="ConversionPattern" value="%d|[%t]|%-5p|%c| - %m%n"/>      </layout>   </appender><!-- Application Loggers --><logger name="com.xxx.account"><level value="info" /></logger><logger name="com.xxx.account-error"><level value="error" /><appender-ref ref="${log.appender}" /><appender-ref ref="account-error" /></logger><!-- Root Logger --><root><level value="info"></level><appender-ref ref="${log.appender}" /></root></log4j:configuration>
log4j.xml中定义了3个appender,就是log输出的位置,一个是控制台,两个是文件,但有一个文件account-error.log是专用于收集特殊错误的文件,可以定义多个分别为不同的场景使用,log4j的相关定义如下:
(1). 输出方式appender一般有5种:              org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)              org.apache.log4j.ConsoleAppender (控制台)               org.apache.log4j.FileAppender (文件)              org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)              org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方) (2). 日记记录的优先级priority,优先级由高到低分为             OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。             Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。 (3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):                 %c        输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)                 %d       输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}                 %l        输出日志事件发生位置,包括类目名、发生线程,在代码中的行数                 %n       换行符                 %m      输出代码指定信息,如info(“message”),输出message                 %p       输出优先级,即 FATAL ,ERROR 等                 %r        输出从启动到显示该log信息所耗费的毫秒数                 %t        输出产生该日志事件的线程名 

3.在controller中使用log4j

private static final Logger logger = LoggerFactory.getLogger("com.xxx.account-error");logger.error("test log");

这样就记录了一条log到了account-error.log中,同时也写了一条log到公用的log文件com.xxx.account.log中,如果只想写到公用log文件中,在log初始化的时候使用class的名称即可

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