如果是采用平时用的形如
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的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...
每天生成一个log4j日志文件,如果只需要将最近一段时间内的日志文件保留,以前或更早的文件不用保留。例如只保留最近一周的日志,日志文件保留3天等等这些。。。通过这个jar包就可以实现。 log4j.properties文件在...
四、Log4j的优化与实践 1. **日志级别动态调整**: 可以根据运行环境或应用状态动态改变日志级别,例如在运行时通过广播接收器接收命令调整日志级别。 2. **日志文件管理**: 可以配置Log4j定期滚动日志文件,避免...
总结,Log4j2通过XML配置文件实现了与MySQL数据库的集成,允许开发者将日志信息存储在数据库中,便于长期保存和分析。理解Log4j2的配置和使用是每个Java开发者必备的技能,这对于日后的故障排查和系统维护至关重要。...
log4j.properties log4j log4j日志保存到邮件 log4j保存到数据库
log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志,指纹日志命名规则,日志输出等级等功能
### log4j乱码问题解决办法 #### 一、引言 在开发过程中,日志记录是必不可少的一个环节。良好的日志系统可以帮助开发者快速定位问题并进行调试。Log4j作为一款广泛使用的Java日志框架,在很多项目中扮演着重要...
Appender 是 Log4j2 中的核心组件之一,负责将日志事件输出到不同的目的地: - **Console Appender**:输出到控制台。 - **File Appender**:将日志记录写入文件。 - **DB Appender**:记录到数据库。 - **SMTP ...
Log4j,作为Java领域中最流行的日志框架之一,因其强大的功能和灵活性而备受推崇。本文将围绕“log4j.zip”项目日志,详细介绍Log4j的基本概念、配置、使用方法以及优化策略。 一、Log4j简介 Log4j是由Apache软件...
Log4j是一款广泛使用的日志记录框架,尤其在Java应用程序中。它允许开发者灵活地控制日志信息的输出,包括输出格式、级别、目的地等。本示例将深入讲解如何利用Log4j的不同Appender来生成不同的日志文件,以满足不同...
**日志框架Log4j详解及配置实例** Log4j是Apache组织开发的一款广泛应用的日志记录框架,尤其在Java应用程序中被广泛采用。它提供了一种灵活、强大的方式来记录程序运行过程中的各种信息,包括错误、警告、调试信息...
Apache Log4j 是一个广泛使用的Java日志框架,它的最新版本是2.15.0。这个框架的主要目的是提供一种灵活、高效的日志记录机制,帮助开发者在应用程序中记录、控制和调试信息。Apache官网提供的"apache-log4j-2.15.0-...
### Log4j教程:深入解析与实践 #### 引言 Log4j是Apache软件基金会下的一个开源项目,旨在提供一种灵活的日志记录机制,使开发者能够轻松地控制日志信息的流向、格式以及级别,而无需修改应用程序的源代码。这种...
`log4j`是一个广泛使用的Java日志框架,它提供了灵活的日志配置,能够帮助开发者记录程序运行过程中的各种信息。本文将深入探讨如何利用`log4j`实现按照日期每天写入不同日志文件的功能,以及涉及到的相关知识点。 ...
Log4J支持将日志信息存储在数据库中,这对于需要长期保存和分析日志数据的情况非常有用。通过配置Appender为JDBCAppender,开发者可以将日志信息写入关系型数据库,如MySQL、Oracle等。这样,日志数据可以进行SQL...
2. `log4j.appender.ServerDailyRollingFile.File=${webApp.root}/WEB-INF/logs/sysout.log` 这里使用了之前在`Web.xml`中定义的`webApp.root`属性,指定日志文件的保存位置为Web应用的`WEB-INF/logs`目录下,文件名...
通常,Log4j的配置信息会保存在`log4j.properties`或`log4j.xml`文件中。加载配置文件是初始化Log4j的第一步,这可以通过`PropertyConfigurator.configure()`或`DOMConfigurator.configure()`方法完成。 5. **实例...
本篇文章将深入探讨如何在Tomcat 8.0.30版本中配置Log4j,实现日志自动按天分割并保存。 1. **Log4j介绍** Log4j是Apache软件基金会的一个项目,提供了一个强大的日志API,允许开发者以简单的方式控制日志信息的...
Log4j作为Apache下的一个开源项目,是Java应用中最常用的日志框架之一,它提供了灵活的日志级别配置、丰富的输出格式以及多样的日志输出目的地选择,如控制台、文件等。 ### Log4j配置详解 #### 步骤一:配置log4j...