需求:
- 日志内容是自定义的。例如,登录信息记录到一个日志文件中,注册信息记录到一个日志文件中。
- log4j每天生成的一个日志文件。
- 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("日志信息。。。");
大家都懂的。。。
分享到:
相关推荐
在提供的压缩包中,我们看到了四个文件: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...
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.properties`或`log4j.xml`)中定义多个Appender。Appender是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.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的主要优势在于其灵活性和可扩展性,允许用户通过配置文件自定义日志记录的方式,无需修改应用程序代码。 #### 二、日志记录的目的 在应用程序中记录日志主要有以下三个目的: 1. **监视代码中变量的变化...
在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...
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.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.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.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.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{...
本文将深入探讨Log4j的配置文件`log4j.properties`,以及如何在Hibernate框架中集成Log4j。 `log4j.properties`配置文件是Log4j的核心,它定义了日志输出的行为,包括日志级别、输出目的地、格式等。以下是一些关键...
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.appender.Console=org.apache.log4j.ConsoleAppender`配置了一个控制台Appender,而`log4j.appender.File=org.apache.log4j.DailyRollingFileAppender`则配置了一个每天滚动的日志文件Appender。...
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....
- `org.apache.log4j.DailyRollingFileAppender`:根据日期滚动日志文件,每天生成一个新的日志文件。 - `org.apache.log4j.RollingFileAppender`:当文件大小达到指定值时,自动滚动日志文件,创建新文件。 - `...
这些级别可以自定义,但 Log4j 建议只使用四个级别:ERROR、WARN、INFO 和 DEBUG。 四、Appenders Appenders 是 Log4j 的输出目的地,用于将日志信息输出到不同的目的地。Log4j 提供了多种 Appenders,包括: 1. ...
相较于简单的打印语句,Log4j提供了更为高级的功能,比如能够根据不同的级别过滤日志消息、支持多种输出方式以及自定义日志格式等。Log4j的设计目的是为了帮助开发者更容易地记录日志信息,同时也方便系统管理员对...
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....