http://dev.csdn.net/article/31827.shtm 我们开发的B/S结构系统,在服务端一般要有日常运行的日志记录。保存成日志文件形式的时候,大家经常会遇到一个问题:日志文件过大。上百兆的日志文件对 查阅日志信息来说也是一个问题。所以我希望能够每天或每个月产生一个日志文件,这样文件不至于过大。 或者根据日志文件大小来判断,超过规定大小,日志自动增加新文件。 在log4j中这两种方式的实现都很简单,只要在配置文件中设置即可。一、按照一定时间产生日志文件,配置文件如下: # Set root logger level to ERROR and its only appender to A1. log4j.rootLogger=ERROR,R # R is set to be a DailyRollingFileAppender. log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=backup.log log4j.appender.R.DatePattern = '.'yyyy-MM-dd log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
以上配置是每天产生一个备份文件。其中备份文件的名字叫backup.log。 具体的效果是这样:当天的日志信息记录在backup.log文件中,前一天的记录在名称为 backup.log.yyyy-mm-dd 的文件中。 类似的,如果需要每月产生一个文件可以修改上面的配置: 将 log4j.appender.R.DatePattern = '.'yyyy-MM-dd 改为 log4j.appender.R.DatePattern = '.'yyyy-MM二、根据日志文件大小自动产生新日志文件 配置文件内容如下:# Set root logger level to ERROR and its only appender to A1. log4j.rootLogger=ERROR,R# R is set to be a RollingFileAppender. log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=backup.log #log4j.appender.R.MaxFileSize=100KB# Keep one backup file log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n 其中: #日志文件的大小 log4j.appender.R.MaxFileSize=100KB # 保存一个备份文件 log4j.appender.R.MaxBackupIndex=1
log4j.rootLogger=ERROR, ROOT
log4j.appender.ROOT=org.apache.log4j.RollingFileAppender
log4j.appender.ROOT.File=myapplication.log
log4j.appender.ROOT.MaxFileSize=1000KB
# 保留5个旧的日志文件
log4j.appender.ROOT.MaxBackupIndex=5
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
# 日志格式:按照WebSphere通用日志格式相似的方式记录
log4j.appender.ROOT.layout.ConversionPattern=[%d] %t %c %-5p - %m%n
# 有选择地更改某些包或者类的日志级别
log4j.logger.com.webage.ejbs=INFO
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- ===================================================================== -->
<!-- -->
<!-- Log4j Configuration -->
<!-- -->
<!-- ===================================================================== -->
<!-- $Id: log4j.xml,v 1.13.2.3 2003/05/02 00:53:12 slaboure Exp $ -->
<!--
| For more configuration infromation and examples see the Jakarta Log4j
| owebsite: http://jakarta.apache.org/log4j
-->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- =================Appenders for CSF=================-->
<appender name="CSF_FILE" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="INFO"/>
<param name="File" value="C:/jboss-3.2.1/server/default/log/csf.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<!-- Mail Appender -->
<appender name="CSF_SMTP" class="org.apache.log4j.net.SMTPAppender">
<param name="Threshold" value="FATAL"/>
<param name="To" value=""/>
<param name="From" value=""/>
<param name="Subject" value="One Fatal Error"/>
<param name="SMTPHost" value=""/>
<param name="BufferSize" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
</layout>
</appender>
<!--JDBC-->
<appender name="CSF_JDBC" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="Threshold" value="ERROR"/>
<param name="driver" value="com.sybase.jdbc2.jdbc.SybDriver"/>
<param name="URL" value="jdbc:sybase:Tds:127.0.0.1:2638/Summit"/>
<param name="user" value="DBA"/>
<param name="password" value="SQL"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="INSERT INTO ErrorLog (ErrorMessage) VALUES ('%d - %c - %p - %m')"/>
</layout>
</appender>
<!--=================End Appenders for CSF================= -->
<!-- =================Appenders for Events=================-->
<appender name="EVENT_FILE" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="INFO"/>
<param name="File" value="C:/jboss-3.2.1/server/default/log/event.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<!-- Mail Appender -->
<appender name="EVENT_SMTP" class="org.apache.log4j.net.SMTPAppender">
<param name="Threshold" value="FATAL"/>
<param name="To" value=""/>
<param name="From" value=""/>
<param name="Subject" value="One Fatal Error"/>
<param name="SMTPHost" value=""/>
<param name="BufferSize" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
</layout>
</appender>
<!-- JDBC -->
<appender name="EVENT_JDBC" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="Threshold" value="ERROR"/>
<param name="driver" value="com.sybase.jdbc2.jdbc.SybDriver"/>
<param name="URL" value="jdbc:sybase:Tds:127.0.0.1:2638/Summit"/>
<param name="user" value="DBA"/>
<param name="password" value="SQL"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="INSERT INTO ErrorLog (ErrorMessage) VALUES ('%d - %c - %p - %m')"/>
</layout>
</appender>
<!--=================End Appenders for Event================= -->
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ==============================-->
<!--
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
The default pattern: Date Priority [Category] Message\n
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender> <appender name="JSR77" class="org.apache.log4j.FileAppender">
<param name="Append" value="false"/>
<param name="File" value="/log/jsr77.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender> -->
<!-- ====================== -->
<!-- More Appender -->
<!-- ====================== -->
<!-- Buffer events and log them asynchronously -->
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="CSF_FILE"/>
<appender-ref ref="CSF_JDBC"/>
<appender-ref ref="CSF_SMTP"/>
<appender-ref ref="EVENT_FILE"/>
<appender-ref ref="EVENT_JDBC"/>
<appender-ref ref="EVENT_SMTP"/>
</appender>
<!-- ================ -->
<!-- Limit categories -->
<!-- ================ -->
<!-- Limit categories to INFO
<category name="">
<priority value="INFO"/>
</category>
-->
<!--
RULES for logging DEBUG < INFO < WARN < ERROR < FATAL.
-->
<!-- tested and run-->
<category name="com.one.events" additivity="false">
<priority value="INFO"/>
<appender-ref ref="EVENT_FILE"/>
<appender-ref ref="EVENT_JDBC"/>
<appender-ref ref="EVENT_SMTP"/>
</category>
<category name="com.one.csf" additivity="false">
<priority value="INFO"/>
<appender-ref ref="CSF_FILE"/>
<appender-ref ref="CSF_JDBC"/>
<appender-ref ref="CSF_SMTP"/>
</category>
<!--
Decrease the priority threshold
<category name="">
<priority value="DEBUG"/>
</category>
-->
<!-- Setup the Root category -->
<root>
<appender-ref ref="ASYNC"/>
</root>
</log4j:configuration>
在log4j中这两种方式的实现都很简单,只要在配置文件中设置即可。一、按照一定时间产生日志文件,配置文件如下:
# Set root logger level to ERROR and its only appender to A1.
log4j.rootLogger=ERROR,R # R is set to be a DailyRollingFileAppender.
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=backup.log
log4j.appender.R.DatePattern = '.'yyyy-MM-dd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
以上配置是每天产生一个备份文件。其中备份文件的名字叫backup.log。
具体的效果是这样:当天的日志信息记录在backup.log文件中,前一天的记录在名称为 backup.log.yyyy-mm-dd 的文件中。
类似的,如果需要每月产生一个文件可以修改上面的配置:
将
log4j.appender.R.DatePattern = '.'yyyy-MM-dd
改为
log4j.appender.R.DatePattern = '.'yyyy-MM二、根据日志文件大小自动产生新日志文件
配置文件内容如下:# Set root logger level to ERROR and its only appender to A1.
log4j.rootLogger=ERROR,R# R is set to be a RollingFileAppender.
log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=backup.log
#log4j.appender.R.MaxFileSize=100KB# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
其中:
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
# 保存一个备份文件
log4j.appender.R.MaxBackupIndex=1