`
qinjingkai
  • 浏览: 262133 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

log4j之全部保存

阅读更多

 

 如果是采用平时用的形如

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按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...

    log4j.CustomLogAppender 限制log4j文件保存天数

    每天生成一个log4j日志文件,如果只需要将最近一段时间内的日志文件保留,以前或更早的文件不用保留。例如只保留最近一周的日志,日志文件保留3天等等这些。。。通过这个jar包就可以实现。 log4j.properties文件在...

    Log4j生成日志保存

    四、Log4j的优化与实践 1. **日志级别动态调整**: 可以根据运行环境或应用状态动态改变日志级别,例如在运行时通过广播接收器接收命令调整日志级别。 2. **日志文件管理**: 可以配置Log4j定期滚动日志文件,避免...

    log4j2.xml记录日志到到数据库

    总结,Log4j2通过XML配置文件实现了与MySQL数据库的集成,允许开发者将日志信息存储在数据库中,便于长期保存和分析。理解Log4j2的配置和使用是每个Java开发者必备的技能,这对于日后的故障排查和系统维护至关重要。...

    log4j.properties完整版本

    log4j.properties log4j log4j日志保存到邮件 log4j保存到数据库

    log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志等

    log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志,指纹日志命名规则,日志输出等级等功能

    log4j乱码问题解决办法

    ### log4j乱码问题解决办法 #### 一、引言 在开发过程中,日志记录是必不可少的一个环节。良好的日志系统可以帮助开发者快速定位问题并进行调试。Log4j作为一款广泛使用的Java日志框架,在很多项目中扮演着重要...

    log4j2用户指南

    Appender 是 Log4j2 中的核心组件之一,负责将日志事件输出到不同的目的地: - **Console Appender**:输出到控制台。 - **File Appender**:将日志记录写入文件。 - **DB Appender**:记录到数据库。 - **SMTP ...

    log4j.zip 项目日志

    Log4j,作为Java领域中最流行的日志框架之一,因其强大的功能和灵活性而备受推崇。本文将围绕“log4j.zip”项目日志,详细介绍Log4j的基本概念、配置、使用方法以及优化策略。 一、Log4j简介 Log4j是由Apache软件...

    log4j按照不同appender生成日志例子

    Log4j是一款广泛使用的日志记录框架,尤其在Java应用程序中。它允许开发者灵活地控制日志信息的输出,包括输出格式、级别、目的地等。本示例将深入讲解如何利用Log4j的不同Appender来生成不同的日志文件,以满足不同...

    log4j配置实例

    **日志框架Log4j详解及配置实例** Log4j是Apache组织开发的一款广泛应用的日志记录框架,尤其在Java应用程序中被广泛采用。它提供了一种灵活、强大的方式来记录程序运行过程中的各种信息,包括错误、警告、调试信息...

    apache-log4j-2.15.0-bin.tar.gz

    Apache Log4j 是一个广泛使用的Java日志框架,它的最新版本是2.15.0。这个框架的主要目的是提供一种灵活、高效的日志记录机制,帮助开发者在应用程序中记录、控制和调试信息。Apache官网提供的"apache-log4j-2.15.0-...

    log4j教程

    ### Log4j教程:深入解析与实践 #### 引言 Log4j是Apache软件基金会下的一个开源项目,旨在提供一种灵活的日志记录机制,使开发者能够轻松地控制日志信息的流向、格式以及级别,而无需修改应用程序的源代码。这种...

    log4j 写多个日志文件,按照日期每天都记

    `log4j`是一个广泛使用的Java日志框架,它提供了灵活的日志配置,能够帮助开发者记录程序运行过程中的各种信息。本文将深入探讨如何利用`log4j`实现按照日期每天写入不同日志文件的功能,以及涉及到的相关知识点。 ...

    深入学习log4J

    Log4J支持将日志信息存储在数据库中,这对于需要长期保存和分析日志数据的情况非常有用。通过配置Appender为JDBCAppender,开发者可以将日志信息写入关系型数据库,如MySQL、Oracle等。这样,日志数据可以进行SQL...

    Log4j 相对路径配置

    2. `log4j.appender.ServerDailyRollingFile.File=${webApp.root}/WEB-INF/logs/sysout.log` 这里使用了之前在`Web.xml`中定义的`webApp.root`属性,指定日志文件的保存位置为Web应用的`WEB-INF/logs`目录下,文件名...

    log4j配置及使用

    通常,Log4j的配置信息会保存在`log4j.properties`或`log4j.xml`文件中。加载配置文件是初始化Log4j的第一步,这可以通过`PropertyConfigurator.configure()`或`DOMConfigurator.configure()`方法完成。 5. **实例...

    Tomcat 8.0.30 log4j配置

    本篇文章将深入探讨如何在Tomcat 8.0.30版本中配置Log4j,实现日志自动按天分割并保存。 1. **Log4j介绍** Log4j是Apache软件基金会的一个项目,提供了一个强大的日志API,允许开发者以简单的方式控制日志信息的...

    使用log4j写日志文件

    Log4j作为Apache下的一个开源项目,是Java应用中最常用的日志框架之一,它提供了灵活的日志级别配置、丰富的输出格式以及多样的日志输出目的地选择,如控制台、文件等。 ### Log4j配置详解 #### 步骤一:配置log4j...

Global site tag (gtag.js) - Google Analytics