现在项目正式服务器上tomcat中放了若干个项目,出点儿错误很难查看tomcat日志,
于是我就想用log4j来做日志处理,把出错信息输入到指定位置,指定文件,这个不难做到,
但我想每天输出一个日期格式形式的文件(但我不想加重命名的批处理命令到服务器上),
譬如,第一天:2010-10-11.log 第二天2010-10-12.log ....不知这个如何做到,能否直接在配置中完成?恳请赐教我用的log4j.xml形式的配置文件我目前配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration >
<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="D:\\soft\\ereryday.log"/>
<param name="Append" value="true"/>
<!-- 以日为单位输出LOG文件,每日输出一个LOG文件-->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- 以时为单位输出LOG文件,每小时输出一个LOG文件
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<!-- 过滤输出时Log内容,在这里,LevelMin是DEBUG,LevelMax都FATAL, 所以输出DEBUG级别到FATAL级别的LOG数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender> <root>
<priority value="debug"/>
<appender-ref ref="ERROR"/>
</root>
</log4j:configuration>
于是我就想用log4j来做日志处理,把出错信息输入到指定位置,指定文件,这个不难做到,
但我想每天输出一个日期格式形式的文件(但我不想加重命名的批处理命令到服务器上),
譬如,第一天:2010-10-11.log 第二天2010-10-12.log ....不知这个如何做到,能否直接在配置中完成?恳请赐教我用的log4j.xml形式的配置文件我目前配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration >
<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="D:\\soft\\ereryday.log"/>
<param name="Append" value="true"/>
<!-- 以日为单位输出LOG文件,每日输出一个LOG文件-->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- 以时为单位输出LOG文件,每小时输出一个LOG文件
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<!-- 过滤输出时Log内容,在这里,LevelMin是DEBUG,LevelMax都FATAL, 所以输出DEBUG级别到FATAL级别的LOG数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender> <root>
<priority value="debug"/>
<appender-ref ref="ERROR"/>
</root>
</log4j:configuration>
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="D:\\soft\\ereryday.log"/>
<param name="Append" value="true"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender> 但我运行后执行产生的文件的名字还是everyday.log,那明天呢,它将仍将被错误信息写在名叫everyday.log的文件里吗?
我想要的效果是譬如今天是2010年10月11日,生成的错误日志文件名就叫2010-10-11.log,
但村通过log4j.xml文件配置能做到吗?
<param name="File" value="d:/xxx.log"/>
<param name="Threshold" value="INFO"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{M/d/yyyy HH:mm} %c %p - %m%n"/>
</layout>
</appender>结果
xxx.log
xxx.log.2010-10-09
xxx.log.2010-10-08
当天的不会产生日期
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=,A1, A2#log4j.logger.cdsc.system.publisher.report = DEBUG# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.Threshold=INFO
log4j.appender.A1.File=/app/fjecm/logs/info.log
#log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=/app/fjecm/logs/fmcc.loglog4j.appender.A2.Threshold=ERROR
#log4j.appender.A2.Append=false#log4j.logger.cdsc.system.publisher.report=DEBUG, A@
#log4j.logger.cdsc.system.publisher.report=ERROR# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#log4j.appender.A1.layout.ConversionPattern=%c %x - %m%n
log4j.appender.A1.layout.ConversionPattern=Fmcc_Log:[%d{yyyy-MM-dd HH:mm:ss}] %5p %c{1}:%L - %m%nlog4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=Fmcc_Log:[%d{yyyy-MM-dd HH:mm:ss}] %5p %c{1}:%L - %m%n