环境:JDK1.6+Spring2.5+log4j-1.2.15.jar+commons-logging.jar
我配置文件均在src根目录上,都是用在project上。
log4j整合app应用中有两种方法;一种是log4j.xml,一种是log4j.properties。
我在用log4j.xm时,系统总出如下错误:(且无法写日志)
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
log4j.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="logs"
class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="GBK" />
<param name="File" value="xmlLogs/logs.log" />
<param name="MaxBackupIndex" value="300" />
<param name="MaxFileSize" value="10000" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %p - %m %n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="info" />
<param name="LevelMax" value="error" />
<param name="acceptOnMatch" value="true" />
</filter>
</appender>
<appender name="synlogs"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="Encoding" value="GBK" />
<param name="File" value="xmlLogs/synLogs.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %p - %m %n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="debug" />
<param name="LevelMax" value="error" />
<param name="acceptOnMatch" value="true" />
</filter>
</appender>
<logger name="com.me.conn" additivity="false">
<level value="info" />
<appender-ref ref="logs" />
</logger>
<logger name="com.me.service" additivity="false">
<level value="info" />
<appender-ref ref="synlogs" />
</logger>
<root>
<priority value="info" />
<appender-ref ref="logs" />
<appender-ref ref="synlogs" />
</root>
</log4j:configuration>
后来,log4j里在加了如上红色的代码,问题才得以解决。
=====log4j.properties====
#log4j.rootLogger=debug, stdout, R,D
log4j.rootLogger=INFO, R,D
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logs/log.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=22
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
### output daily file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/DailyLog.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
#log4j.logger.com.codefutures=DEBUG
调用方式为:
Log logger = LogFactory.getLog(ApplicationTest.class);
- <!-- ========================== 自定义输出格式说明================================ -->
- <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
- <!-- #%r 输出自应用启动到输出该log信息耗费的毫秒数 -->
- <!-- #%c 输出所属的类目,通常就是所在类的全名 -->
- <!-- #%t 输出产生该日志事件的线程名 -->
- <!-- #%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” -->
- <!-- #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 -->
- <!-- #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) -->
- <!-- ========================================================================== -->
- <!-- ========================== 输出方式说明================================ -->
- <!-- Log4j提供的appender有以下几种: -->
- <!-- org.apache.log4j.ConsoleAppender(控制台), -->
- <!-- org.apache.log4j.FileAppender(文件), -->
- <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
- <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
- <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->
- <!-- ========================================================================== -->