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

自定义log4j中的DailyRollingFileAppender

    博客分类:
  • java
阅读更多

需求:

  1. 日志内容是自定义的。例如,登录信息记录到一个日志文件中,注册信息记录到一个日志文件中。
  2. log4j每天生成的一个日志文件。
  3. log4j每月初自动生成一个文件夹,每天的日志文件按月排放。
其实前2条很简单,log4j都有相应功能,但是log4j并不提供按月或者按日自动生成文件夹;所以需要修改DailyRollingFileAppender这个类。废话少说,直接上代码,写的不好,大家见谅!

  /**
     Rollover the current file to a new file. 每当写入日志时候log4j就会自动调用此方法
  */
  void rollOver() throws IOException {

    /* Compute filename, but only if datePattern is specified */
    if (datePattern == null) {
      errorHandler.error("Missing DatePattern option in rollOver().");
      return;
    }

    String datedFilename = fileName+sdf.format(now);
    // It is too early to roll over because we are still within the
    // bounds of the current interval. Rollover will occur once the
    // next interval is reached.
    if (scheduledFilename.equals(datedFilename)) {
      return;
    }

    // close current file, and rename it to datedFilename
    this.closeFile();

    String logFilePath = scheduledFilename.substring(0, scheduledFilename.lastIndexOf("/")+1);
    String logFileName = scheduledFilename.substring(scheduledFilename.lastIndexOf("/"));
	
    //获得当前月,创建月文件夹,移动文件 主要就是这段代码,每月初自动生成当月份文件夹,然后备份日志
    Calendar cal = Calendar.getInstance();
    String newPath = logFilePath+cal.get(Calendar.YEAR)+""+addZero(cal.get(Calendar.MONTH)+1);
    File fnewpath = new File(newPath); 
    if(!fnewpath.exists()) 
    	fnewpath.mkdirs(); 
    File target  = new File(newPath+logFileName);
    if (target.exists()) {
      target.delete();
    }

    File file = new File(fileName);
    boolean result = file.renameTo(target);
    if(result) {
      LogLog.debug(fileName +" -> "+ scheduledFilename);
    } else {
      LogLog.error("Failed to rename ["+fileName+"] to ["+scheduledFilename+"].");
    }

    try {
      // This will also close the file. This is OK since multiple
      // close operations are safe.
      this.setFile(fileName, false, this.bufferedIO, this.bufferSize);
    }
    catch(IOException e) {
      errorHandler.error("setFile("+fileName+", false) call failed.");
    }
    scheduledFilename = datedFilename;
  }
 
	<!-- 游戏登陆日志 -->
	<appender name="FileAppenderLogin" class="com.heishi.commons.logs.DailyRollingFileAppender">
		<param name="File" value="/data/syslog/login_" />
		<param name="Threshold" value="INFO" />
		<param name="DatePattern" value="yyyyMMdd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%m%n" />
		</layout>
	</appender>
	
	<!-- 游戏初始化日志 -->
	<appender name="FileAppenderReg" class="com.heishi.commons.logs.DailyRollingFileAppender">
		<param name="File" value="/data/syslog/active_" />
		<param name="Threshold" value="INFO" />
		<param name="DatePattern" value="yyyyMMdd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%m%n" />
		</layout>
	</appender>
	
	<logger name="loggerLogin">
		<level value="info" />
        <appender-ref ref="FileAppenderLogin"/>  
	</logger>
	<logger name="loggerReg">
		<level value="info" />
        <appender-ref ref="FileAppenderReg"/>  
	</logger>
  
	private static Logger loggerLogin = Logger.getLogger("loggerLogin");
方法中使用:

loggerLogin.info("日志信息。。。");



	private static Logger loggerReg = Logger.getLogger("loggerReg"); 
方法中使用:

loggerReg.info("日志信息。。。");
 

大家都懂的。。。

 

0
4
分享到:
评论

相关推荐

    log4j配置文件以及配套jar包.rar

    在提供的压缩包中,我们看到了四个文件:log4j-core-2.3.jar、log4j-1.2.17.jar、log4j-api-2.3.jar以及log4j.properties。这里,log4j-core和log4j-api是Log4j 2.x版本的核心库,它们提供了日志记录的功能实现。log...

    SpringBoot框架配置log4j和log4j2的配置代码

    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=app.log log4j.appender.file.Append=true log4j.appender.file.Threshold=DEBUG log4j.appender.file.layout=org.apache...

    log4j输出多个自定义路径的日志文件小例子

    要实现输出多个自定义路径的日志文件,我们需要在Log4j的配置文件(通常是`log4j.properties`或`log4j.xml`)中定义多个Appender。Appender是Log4j中负责将日志信息输出到指定目的地的组件,例如文件、控制台、网络...

    tomcat下的log4j日志配置

    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=${catalina.home}/logs/yourapp.log log4j.appender.A1.DatePattern='.'yyyy-MM-dd log4j.appender.A1.layout=org.apache...

    log4j-1.2.17.jar下载

    log4j.appender.File=org.apache.log4j.DailyRollingFileAppender log4j.appender.File.File=/var/log/app.log log4j.appender.File.layout=org.apache.log4j.PatternLayout log4j.appender.File.layout....

    log4j实用配置扩展

    log4j的主要优势在于其灵活性和可扩展性,允许用户通过配置文件自定义日志记录的方式,无需修改应用程序代码。 #### 二、日志记录的目的 在应用程序中记录日志主要有以下三个目的: 1. **监视代码中变量的变化...

    Spring项目中怎么配置log4j

    在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...

    log4j与web.xml的配置

    log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=/var/log/app.log log4j.appender.FILE.Append=true log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE....

    log4j-1.2.17.jar及配置文件

    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=/var/log/app.log log4j.appender.file.Append=true log4j.appender.file.Threshold=INFO log4j.appender.file.layout=...

    log4j jarjar包

    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=log/app.log log4j.appender.file.Append=true log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j....

    log4j日志驱动包

    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=SampleMessages.log4j log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' log4j.appender.A1.layout=org.apache.log4j.xml....

    log4j使用jar包和log4j.properties配置文件

    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=/var/log/app.log log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d{...

    Log - Log4j - log4j.properties配置文件

    本文将深入探讨Log4j的配置文件`log4j.properties`,以及如何在Hibernate框架中集成Log4j。 `log4j.properties`配置文件是Log4j的核心,它定义了日志输出的行为,包括日志级别、输出目的地、格式等。以下是一些关键...

    log4j_jar包跟教程说明

    log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=./logs/app.log log4j.appender.FILE.Append=true log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE....

    log4j需要的jar以及properties文件

    例如,`log4j.appender.Console=org.apache.log4j.ConsoleAppender`配置了一个控制台Appender,而`log4j.appender.File=org.apache.log4j.DailyRollingFileAppender`则配置了一个每天滚动的日志文件Appender。...

    log4j-jar所需要的全部JAR包

    log4j.appender.File=org.apache.log4j.DailyRollingFileAppender log4j.appender.File.File=log/app.log log4j.appender.File.layout=org.apache.log4j.PatternLayout log4j.appender.File.layout....

    log4j.properties配置详解

    - `org.apache.log4j.DailyRollingFileAppender`:根据日期滚动日志文件,每天生成一个新的日志文件。 - `org.apache.log4j.RollingFileAppender`:当文件大小达到指定值时,自动滚动日志文件,创建新文件。 - `...

    log4j与log4j.properties的配置.doc

    这些级别可以自定义,但 Log4j 建议只使用四个级别:ERROR、WARN、INFO 和 DEBUG。 四、Appenders Appenders 是 Log4j 的输出目的地,用于将日志信息输出到不同的目的地。Log4j 提供了多种 Appenders,包括: 1. ...

    log4j入门详解

    相较于简单的打印语句,Log4j提供了更为高级的功能,比如能够根据不同的级别过滤日志消息、支持多种输出方式以及自定义日志格式等。Log4j的设计目的是为了帮助开发者更容易地记录日志信息,同时也方便系统管理员对...

    log4j-1.2.16.jar与slf4j-api-1.6.1.jar加个转换包和log4j.properties示例

    log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=/path/to/logfile.log log4j.appender.FILE.Append=true log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE....

Global site tag (gtag.js) - Google Analytics