Log4j的配置(xml and properties)
properties形式:
?
用到的包就是spring.jar和log4j.jar了,首先要配置的是web.xml,需要增加以下几项内容:
log4j参数:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>5000</param-value>
</context-param>
spring监听:
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
spring在Log4jConfigListener中会去读取context-param中的参数,找到log4j配置文件的位置,其中log4jRefreshInterval是动态修改配置文件的,非必须选项。
配置好了web.xml,然后就是log4j.properties,这个文件包含的所有选项的用法网络上都可以查到,这里只记录常用的几项。
#定义根节点,info是日志等级(共分5级),A1是自定义输出,console是输出到控制台
log4j.rootLogger=info, A1,console
#自定义输出配置
#循环写文件模式,输出文件名,单个文件大小,最大文件数,输出格式定义
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=test.log
log4j.appender.A1.MaxFileSize=5MB
log4j.appender.A1.MaxBackupIndex=10
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c{1}]-[%p]:%L - %m%n
# 输出到控制台模式及输出格式
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c{1}]-[%p]:%L - %m%n
然后在自己的类文件里就可以定义log4j使用了。
private static Logger logger = Logger.getLogger(YOURCLASS.class);
可以使用logger.info();logger.error();logger.debug();等打出自己的日志。
在配置完用tomcat测试时发现一个问题,就是自定义的日志文件test.log跑到${TOMCAT_HOME}/bin目录下边了,后来查了资料,通过以下配置可以修改此文件目录,在web.xml里增加一个参数:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>YourApp.root</param-value>
</context-param>
然后在log4j中定义日志文件时如下:
log4j.appender.A1.File=${YourApp.root}/test.log
此时test.log文件就输出到WEB-INF同级目录下了,当然这个也可以自己随便指定了。
顺便再记录下,今天测试出个结论,在加载web.xml时的顺序是:1.listener 2.filter 3.servlet
参考链接:http://blog.itpub.net/post/17457/487967
?
?
xml形式:
?
<?xml?version="1.0"?encoding="UTF-8"?>?? ?? <!DOCTYPE?log4j:configuration?SYSTEM?"log4j.dtd">?? ?? ????? ?? <log4j:configuration?xmlns:log4j='http://jakarta.apache.org/log4j/'?>?? ?? ????? ?? ????<appender?name="myConsole"?class="org.apache.log4j.ConsoleAppender">?? ?? ????????<layout?class="org.apache.log4j.PatternLayout">?? ?? ????????????<param?name="ConversionPattern"????? ?? ????????????????value="[%d{dd?HH:mm:ss,SSS\}?%-5p]?[%t]?%c{2\}?-?%m%n"?/>?? ?? ????????</layout>?? ?? ????????<!--过滤器设置输出的级别-->?? ?? ????????<filter?class="org.apache.log4j.varia.LevelRangeFilter">?? ?? ????????????<param?name="levelMin"?value="debug"?/>?? ?? ????????????<param?name="levelMax"?value="warn"?/>?? ?? ????????????<param?name="AcceptOnMatch"?value="true"?/>?? ?? ????????</filter>?? ?? ????</appender>?? ?? ?? ?? ????<appender?name="myFile"?class="org.apache.log4j.RollingFileAppender">????? ?? ????????<param?name="File"?value="D:/output.log"?/><!--?设置日志输出文件名?-->?? ?? ????????<!--?设置是否在重新启动服务时,在原有日志的基础添加新日志?-->?? ?? ????????<param?name="Append"?value="true"?/>?? ?? ????????<param?name="MaxBackupIndex"?value="10"?/>?? ?? ????????<layout?class="org.apache.log4j.PatternLayout">?? ?? ????????????<param?name="ConversionPattern"?value="%p?(%c:%L)-?%m%n"?/>?? ?? ????????</layout>?? ?? ????</appender>?? ?? ???? ?? ????<appender?name="activexAppender"?class="org.apache.log4j.DailyRollingFileAppender">?? ?? ????????<param?name="File"?value="E:/activex.log"?/>???? ?? ????????<param?name="DatePattern"?value="'.'yyyy-MM-dd'.log'"?/>???? ?? ????????<layout?class="org.apache.log4j.PatternLayout">?? ?? ?????????<param?name="ConversionPattern"???? ?? ????????????value="[%d{MMdd?HH:mm:ss?SSS\}?%-5p]?[%t]?%c{3\}?-?%m%n"?/>?? ?? ????????</layout>???? ?? ????</appender>?? ?? ????? ?? ????<!--?指定logger的设置,additivity指示是否遵循缺省的继承机制-->?? ?? ????<logger?name="com.runway.bssp.activeXdemo"?additivity="false">?? ?? ????????<priority?value?="info"/>???? ?? ????????<appender-ref?ref="activexAppender"?/>???? ?? ????</logger>?? ?? ?? ?? ????<!--?根logger的设置-->?? ?? ????<root>?? ?? ????????<priority?value?="debug"/>?? ?? ????????<appender-ref?ref="myConsole"/>?? ?? ????????<appender-ref?ref="myFile"/>????? ?? ????</root>?? ?? </log4j:configuration>???
?
(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??????? 输出产生该日志事件的线程名
参考链接:http://13480.blog.163.com/blog/static/16285514200921743741252/
?