如果是采用平时用的形如
log4j.appender.logfile.File=d:/log.txt
log4j.appender.logfile.MaxFileSize=1024KB
log4j.appender.logfile.MaxBackupIndex=4
则回出现一个问题,即只能保存一定数量的文件,在这里是只保存4个log文件,超过4个之后之前的信息就丢失了 ,但有时候 要求保留所有的log文件的时候这样的做法就无能为力了;这个时候就不能再用log4j.properties这个文件类配置了,而要用log4j.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="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %c - %m%n"/>
</layout>
</appender>
-->
<appender name="log" class="com.skywin.mps.crontab.tools.MpsTaskAppender">
<param name="file" value="log/log.txt"/>
<param name="MaxFileSize" value="1024KB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %c - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="INFO"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<appender name="trace" class="com.skywin.mps.crontab.tools.MpsTaskAppender">
<param name="file" value="log/trace.txt"/>
<param name="MaxFileSize" value="1024KB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %c - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="DEBUG"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<appender name="error" class="com.skywin.mps.crontab.tools.MpsTaskAppender">
<param name="file" value="log/error.txt"/>
<param name="MaxFileSize" value="1024KB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %c - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="ERROR"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<root>
<appender-ref ref="error"/><appender-ref ref="log"/><appender-ref ref="trace"/></root>
</log4j:configuration>
其中com.skywin.mps.crontab.tools.MpsTaskAppender是自己写的类
代码如下:
package com.skywin.mps.crontab.tools;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import org.apache.log4j.RollingFileAppender;
import org.apache.log4j.helpers.CountingQuietWriter;
import org.apache.log4j.helpers.LogLog;
public class MpsTaskAppender extends RollingFileAppender {
public void rollOver() {
LogLog.debug("rolling over count=".concat(String.valueOf(String
.valueOf(((CountingQuietWriter) super.qw).getCount()))));
LogLog.debug("maxBackupIndex=".concat(String.valueOf(String
.valueOf(super.maxBackupIndex))));
int index = super.fileName.lastIndexOf('.');
StringBuffer sb = new StringBuffer(super.fileName);
sb.insert(index, getTimeExt());
File target = new File(sb.toString());
closeFile();
File file = new File(super.fileName);
LogLog
.debug(String.valueOf(String.valueOf((new StringBuffer(
"Renaming file ")).append(file).append(" to ").append(
target))));
file.renameTo(target);
try {
// setFile(super.fileName, false, super.bufferedIO,
// super.bufferSize);
setFile(super.fileName, true, super.bufferedIO, super.bufferSize);
} catch (IOException e) {
LogLog.error(String.valueOf(String.valueOf((new StringBuffer(
"setFile(")).append(super.fileName).append(
", false) call failed."))), e);
}
}
private String getTimeExt() {
String tstr = "_";
// tstr = String.valueOf(tstr) + String.valueOf(StrDate.date2str(new
// Date()));
return tstr + PubTool.date2Str(new Date());
}
private String ext;
}
分享到:
相关推荐
log4j按功能保存日志
每天生成一个log4j日志文件,如果只需要将最近一段时间内的日志文件保留,以前或更早的文件不用保留。例如只保留最近一周的日志,日志文件保留3天等等这些。。。通过这个jar包就可以实现。 log4j.properties文件在...
Log4j Android日志;两种方式可选;
log4j.properties log4j log4j日志保存到邮件 log4j保存到数据库
log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志,指纹日志命名规则,日志输出等级等功能
演示了java记录通过log4j2记录日志到mysql数据库中
实现了log4j的log4j.propertis和log4j.xml两张配置方式
### set log levels ###log4j.rootLogger = debug , stdout , D , E### 输出到控制台 ###log4j.appender.stdout =org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target =System.outlog4j.appender.stdout....
log4j按照不同appender生成日志例子,log4j按照不同接口生成各自日志文件小例子。
log4j的使用说明,简单的描述了log4j的文档,控制台的输出配置。以及日志保存的策略
Log4J的配置文件(log4j.properties)就是用来设置记录器的级别、存放和布局的通过配置,记录程序在运行的时候的点点滴滴,并可以进行永久保存
Tomcat 8.0.30 配置log4j自动按天分割日志保存
把log4j的包和commons- logging的包(加在一起才两个)放到classpath下面。然后把配置文件保存为log4j.properties,也放在classpath下 面(如果用Eclipse的话,放在src目录下即可)。然后就可以运行了
主要介绍了Springboot项目使用Slf4j将日志保存到本地目录的实现方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
log4j 2.2、2.1等在android上的应用,可以生成文件并保存日志
springboot 整合log4j2配置文件的配置文件,里面配置了默认参数,使用的时候稍微修改保存地址即可。
log4j.properties参数详解,PDF文件,值得参考保存。对于每个参数的含义记不住,可以将此文档保存做开发参考文档
系统必须是使用LOG4J进行日志管理,否则方法无效。 系统必须包含commons-logging-xxx.jar,log4j-xxx.jar这两个JAR包,XXX为版本号。 二、操作步骤 1、创建日志表 要把日志持久化,必须在数据库中创建一张...
log4j2 jdbc appender 实现将日志保存到 mysql。