spring +log4j 配置日志按天,小时滚动输出切成文件

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring +log4j 配置日志按天,小时滚动输出切成文件相关的知识,希望对你有一定的参考价值。

一 log4j的命令解析

1.1 案例配置解析

log4j.rootLogger=INFO,file2,file3
 
#file2----------
 
log4j.appender.file2=org.apache.log4j.DailyRollingFileAppender
 
log4j.appender.file2.Append=true
 
log4j.appender.file2.DatePattern='_' yyyy-MM-dd-HH
 
log4j.appender.file2.File=H:/logs/message2.log
 
log4j.appender.file2.Threshold=INFO
 
log4j.appender.file2.Encoding=UTF-8
 
log4j.appender.file2.layout=org.apache.log4j.PatternLayout
 
log4j.appender.file2.layout.ConversionPattern=<%d{yyyy-MM-dd HH\\:mm\\:ss\\:SSS} [%p]> %X{module}-%X{random}: %m%n

命令解析:

1 log4j.rootLogger=INFO,file2,file3 中的INFO 是日志级别而后面的 file2,file3 就是制定的输出文件

2. log4j.appender.file2=org.apache.log4j.DailyRollingFileAppender 这一行配置就是log4j每天一个日志文件

3.log4j.appender.file3.Append=true  日志文件是否追加

4.log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH-mm  这里就是定义的时间格式,如果时间定义到分钟(mm)就是每分钟生成一个日志文件,而这里定义的这个格式就是日志名后缀。

DatePattern中配置的'_'yyyy-MM-dd-HH-mm'.log' 意思是根据这个时间来定时生成文件,并且把'_'yyyy-MM-dd-HH-mm'.log'附加在原文件的后面,即:logcase_'yyyy-MM-dd-HH-mm'.log', 由于定义到mm所以就每分钟生成一次。

5.log4j.appender.file3.File=H:/logs/message3.log  这里定义了日志路径

6. log4j.appender.file2.Threshold=INFO  日志输出级别

 7.log4j.appender.file3.Encoding=UTF-8  日志编码

8.log4j.appender.file2.layout=org.apache.log4j.PatternLayout

log4j.appender.file3.layout.ConversionPattern=<%d{yyyy-MM-dd HH\\:mm\\:ss\\:SSS} [%p]>[Galaxy-IRS] %X{module}-%X{random}: %m%n

定义的日志格式

 9.每个生成的日志最大是1KB,允许生成的最多文件数量是3,即是文件数量达到上限3个以后,则覆盖之前的文件。

log4j.appender.RollingFile.MaxFileSize=1KB

log4j.appender.RollingFile.MaxBackupIndex=3

 1.2 按自定义时间生成日志

1、log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH-mm 每分钟生成一个日志文件

2、log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH 每小时生成一个日志文件

3、log4j.appender.file3.DatePattern='_' yyyy-MM-dd  每天生成一个日志文件

二 log4j的配置案例

https://www.cnblogs.com/wang3680/p/7690607.html

 2.1 测试代码

1.测试代码

package cn.zhoucy.test;

import org.apache.log4j.Logger;

public class TestLog4j {

    private static Logger logger=Logger.getLogger(TestLog4j.class); // 获取logger实例 

    public static void main(String[] args) {

        logger.debug("调试debug信息");
        logger.info("普通Info信息");
        logger.warn("警告warn信息");
        logger.error("error信息");       
        logger.fatal("严重错误fatal信息");
    }
}

2.log4j的日志文件

log4j.rootLogger=DEBUG, Console ,File ,DailyRollingFile ,RollingFile

#Console  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

#File
log4j.appender.File = org.apache.log4j.FileAppender
log4j.appender.File.File = E://File.log
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#DailyRollingFile
log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFile.File = E://DailyRollingFile.log
log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#RollingFile
log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File = E://RollingFile.log
log4j.appender.RollingFile.MaxFileSize=1KB
log4j.appender.RollingFile.MaxBackupIndex=3
log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

由log4j的配置文件:

Console 和File是常规的控制台和文件输出,

DailyRollingFile 和RollingFile分别是按天生成,和按日志文件指定大小生成文件。运行后,控制台输出如下:

 2.2 每天生成一个日志文件

#DailyRollingFile
log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFile.File = E://DailyRollingFile.log
log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

解释:

log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender  就表明是每天生成一个日志文件。

log4j.appender.DailyRollingFile.File = E://DailyRollingFile.log 表明生成的日志文件名称,不过要注意,这里表示的是当天的文件名字,历史文件会以日期结尾。

 2.3 每天生成一个日志文件

有的时候,会需要指定文件大小,比如说,日志文件生成到了1M,就新生成一个日志文件,同时可以指定一共可以生成的最大文件数。配置文件如下:

#RollingFile
log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File = E://RollingFile.log
log4j.appender.RollingFile.MaxFileSize=1KB
log4j.appender.RollingFile.MaxBackupIndex=3
log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

关键的就是第3行和第4行:

log4j.appender.RollingFile.MaxFileSize=1KB
log4j.appender.RollingFile.MaxBackupIndex=3

表示的是,每个生成的日志最大是1KB,允许生成的最多文件数量是3,即是文件数量达到上限3个以后,则覆盖之前的文件。

以上是关于spring +log4j 配置日志按天,小时滚动输出切成文件的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot中的日志配置

Log4J 未正确归档日志

log4j日志配置(按天/按日)

对log4j产生的日志文件进行监控

Spring Boot配置保存日志文件

Java Spring log4j-怎么配置日志输入的相对路径?