log4j的详细讲解

一直在使用log,前两天自己配置了一下 才发现不会配置。即使copy过来的代码我也看不懂。
恶补了一下。

先上配置

rootPath=logs/
log4j.rootLogger=ERROR, InfoAppender, ERRORAppender
log4j.logger.play=INFO
# Access files
log4j.appender.InfoAppender=org.apache.log4j.RollingFileAppender
log4j.appender.InfoAppender.File=${rootPath}access.log
log4j.appender.InfoAppender.MaxFileSize=20MB
log4j.appender.InfoAppender.MaxBackupIndex=10
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m%n
# Error files
log4j.appender.ERRORAppender=org.apache.log4j.RollingFileAppender
log4j.appender.ERRORAppender.File=${rootPath}error.log
log4j.appender.ERRORAppender.MaxFileSize=10MB
log4j.appender.ERRORAppender.MaxBackupIndex=100
log4j.appender.ERRORAppender.Threshold=ERROR
log4j.appender.ERRORAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ERRORAppender.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m%n
# 特殊日志
log4j.logger.SPECIAL=INFO,SPECIALAppender
#子Logger 是否继承 父Logger 的 输出源(appender) 的标志位
log4j.additivity.SPECIAL=false
log4j.appender.SPECIALAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.SPECIALAppender.File=${rootPath}special.log
log4j.appender.SPECIALAppender.Append=true
log4j.appender.SPECIALAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.SPECIALAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %t %l ~ %F %c %m%n

代码中的第二行 log4j.rootLogger=[ERROR日志级别], [InfoAppender(日志输出位置1)], [ERRORAppender(日志输出位置2)]
该配置表示:当前日志没有别的特殊指定的话,只会打印出 级别> EEROR的日志到两个(InfoAppender / ERRORAppender )日志输出的位置。
至于这两个日志怎么输出 / 以及输出到哪里 后面有相应的配置。

上面配置文件有一个叫 [特殊日志] 的,这个运用场景是:你需要把某一个功能的日志打印在同一个log文件里面的时候就用到了。他的相应的使用方法是: private static org.apache.log4j.Logger SPECIAL = org.apache.log4j.Logger.getLogger("SPECIAL");

测试对应的java代码是:

	private static org.apache.log4j.Logger SPECIAL = org.apache.log4j.Logger.getLogger("SPECIAL");
    private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(OssController.class);
    public static void uploadFile() {
        logger.debug("我是debug");
        logger.error("我是error");
        logger.info("我是info");
        SPECIAL.error("我是特殊的ERROR");
    }

access.log日志结果如下

在这里插入图片描述

error.log的日志结构如下图

log4j的详细讲解_第1张图片

special.log的日志结果如下图

在这里插入图片描述

你可能感兴趣的:(log4j,后端java)