`
flysnowxf
  • 浏览: 578793 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件

    博客分类:
  • Java
阅读更多
DailyRollingFileAppender生成的文件是不带时间戳的,必须在某个时间点后,才对原来文件加上时间戳进行重命名。
比如时间戳精确到小时,格式为.yyyy-MM-dd-HH,当前时间为2011-05-05的5点,那么日志为
log
时间变为6点之后(并且6点有日志访问),日志为
log
log.2011-05-05-05

因为log4j是事件触发的,如果某段时间没有日志访问,即使时间点到了,也不会加上时间戳进行重命名。比如两天后才有日志访问,这时才产生log.2011-05-05-05这个文件。这样会造成日志统计中,统计不到这个文件。

解决方法是,生成日志文件的时候就已经加上时间戳。比如5点时候的日志,就已经是log.2011-05-05-05。原log4j没有实现这个功能,需要自己继承FileAppender来实现一个Appender。我看了一下源码,可以参考DailyRollingFileAppender,修改一下它的构造函数和rollOver。自己没有去实验,不知道能不能成功。

apache-log4j-extras是log4j的扩展包,其中TimeBasedRollingPolicy可以实现这个需求。
需要的包:
log4j-1.2.15.jar
apache-log4j-extras-1.0.jar
注意:log4j必须是1.2.15以上,14不行

log4j配置文件不能使用properties,必须使用xml。配置可参考:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
     <!-- appender -->
     <!-- STDOUT -->
     <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
          <layout class="org.apache.log4j.PatternLayout">
               <param name="ConversionPattern" value="%d %p [%c] - %m%n" />
          </layout>
     </appender>

     <!-- FILE -->
     <appender name="FILE"
          class="org.apache.log4j.rolling.RollingFileAppender">
          <rollingPolicy
               class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
               <param name="FileNamePattern"
                    value="d:/logs/file.%d{yyyy-MM-dd-HH}" />
          </rollingPolicy>
          <layout class="org.apache.log4j.PatternLayout">
               <param name="ConversionPattern"
                    value="%m%n" />
          </layout>
     </appender>
    
     <logger name="view">
          <level value="info" />
          <appender-ref ref="FILE" />
     </logger>

     <root>
          <level value="info" />
          <appender-ref ref="STDOUT" />
     </root>
</log4j:configuration>

注意:org.apache.log4j.rolling.RollingFileAppender是rolling包下的,而不是原来的org.apache.log4j.RollingFileAppender

测试用例:
public static void main(String[] args) {
           Logger logger = Logger.getLogger("view");
           logger.info("test");
}


TimeBasedRollingPolicy的使用可参考:
http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
分享到:
评论
4 楼 flyzsd 2011-05-09  
用 SLF4J + LOGBACK
3 楼 flysnowxf 2011-05-06  
logback实现以上需求的配置:
<timestamp key="byHour" datePattern="yyyy-MM-dd-HH"/> 
<appender name="FILE"
		class="ch.qos.logback.core.FileAppender">
		<File>d:/logs/file.${byHour}</File>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<Pattern>
				%msg%n
			</Pattern>
		</layout>
	</appender>

	<logger name="view">
		<level value="info" />
		<appender-ref ref="FILE" />
	</logger>

不需要使用rolling包,直接产生带时间戳的日志文件。
2 楼 flysnowxf 2011-05-06  
simplechinese 写道
logback飘过

看了下logback,它把这个功能集成进去了。那哥们老折腾了,弄了slf4j,又新开一个logback。
1 楼 simplechinese 2011-05-05  
logback飘过

相关推荐

    tomcat下用Log4j 按文件大小,生成catalina.out日志文件

    要实现按文件大小生成日志,我们需使用Log4j的RollingFileAppender。这个Appender会在日志文件达到预设大小时自动滚动并创建新的日志文件。以下是一个简单的`log4j.properties`配置示例: ```properties # 设置root...

    log4j日志文件

    例如,`log4j.appender.mylog=org.apache.log4j.FileAppender`表示日志将写入文件。 - **Layout**:日志输出格式,如HTML、Simple、TTCC或PatternLayout。PatternLayout允许自定义输出格式,如`%m`输出消息,`%p`...

    log4j日志配置以及配置文件详解

    接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...

    log4j生成文件及文件夹

    本文将深入探讨如何利用Log4j生成动态的日志文件名以及动态创建文件夹,帮助开发者更好地管理和分析应用程序的运行状态。 Log4j是一款功能强大的开源日志组件,它允许程序员灵活地控制日志信息的输出级别,如DEBUG...

    Log4j日志包

    log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...

    AndroidStudio 使用log4j记录日志,按照大小定期滚动日志Demo

    本文将详细介绍如何在Android Studio中使用log4j库来记录日志,并实现按照日志文件大小自动滚动的功能,以及如何进行日志内容的格式化输出。 首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    log4j按功能保存日志

    Log4j是一款广泛使用的Java日志记录框架,它允许开发者按照功能模块或特定需求记录应用程序运行过程中的事件信息。在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入...

    使用log4j写日志文件

    在Java应用中使用Log4j进行日志记录的第一步,是创建并配置log4j的属性文件(log4j.properties)。这个文件定义了日志的级别、输出目的地以及日志的格式。以下是一个典型的log4j配置示例: ```properties # 设置根...

    log4j日志文件乱码解决方法

    在IT行业中,日志记录是调试和监控应用程序的关键部分,而Log4j是Java平台广泛使用的日志框架。本文将详细讨论如何解决Log4j日志文件出现的乱码问题。 首先,我们要理解Log4j的工作原理。Log4j允许开发者自定义日志...

    Log4J_全能配置文件.pdf

    - `log4j.appender.FILE.layout.ConversionPattern`:定义了文件日志的格式化模式,与控制台输出相似。 ##### 2.4 回滚文件配置 ```properties log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender...

    log4j多个简单实例

    除了默认的`FileAppender`,Log4j还提供了多种Appender,如`ConsoleAppender`(输出到控制台)、`SMTPAppender`(发送电子邮件)、`RollingFileAppender`(文件大小达到一定限制后自动滚动)等。根据实际需求,你...

    log4net自动删除日志文件实现

    一种常见的方法是利用log4net的RollingFileAppender,这个Appender会在日志文件达到指定大小或日期时创建新的日志文件。结合文件系统操作,可以定期检查并删除超过保留期限的日志文件。 **3. RollingFileAppender...

    log4j2+slf4j+测试类日志按日期生成

    要实现日志按日期生成,我们需要在`Log4j2`的配置文件中设置`RollingFileAppender`。`RollingFileAppender`会在文件大小达到一定限制或时间间隔(如每日)时,自动滚动生成新的日志文件。以下是一个基本的`log4j2....

    log4j使用笔记

    - `org.apache.log4j.RollingFileAppender`:根据文件大小自动滚动输出文件。 - `org.apache.log4j.WriteAppender`:将日志写入到其他输出流。 - `org.apache.log4j.jdbc.JDBCAppender`:通过 JDBC 将日志记录到...

    log4j日志详细讲解

    Log4j是一个广泛使用的Java日志框架,它允许开发者在应用程序中记录各种级别的日志信息,包括ERROR、WARN、INFO、DEBUG等。日志对于调试、性能分析、故障排查以及系统监控至关重要。以下是对Log4j日志的详细讲解: ...

    log4j jar包

    Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,通过配置可以设定日志的输出级别、输出位置、输出格式等。例如,以下配置将INFO及以上级别的日志输出到控制台,ERROR级别的日志同时写入名为`error.log`的...

    教你更简单的使用log4j日志

    - `org.apache.log4j.RollingFileAppender`: 文件大小达到一定程度后自动滚动的日志Appender。 - `org.apache.log4j.WriterAppender`: 可自定义日志输出位置的Appender。 `Layout`则负责定义日志输出的具体格式,...

    log4net 配置 根据日期生成 文件 根据 分类 (INFO、ERROR) 生成文件

    本文将详细介绍如何使用log4net配置根据日期生成文件,并且根据日志级别(INFO、ERROR)生成不同的文件。 #### 一、log4net简介 log4net是一个开放源代码的日志框架,用于.NET平台的应用程序。它基于Apache Logging ...

    log4j日志驱动包

    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.Threshold=ERROR log4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling....

Global site tag (gtag.js) - Google Analytics