LoggerFactory使用与log4j.properties的参数介绍
一、LoggerFactory使用
使用org.slf4j来控制日志的输出,常见的就是使用这段代码
private static final Logger logger = LoggerFactory.getLogger(LoggerFactoryDemo.class);
需要的依赖有
<!-- slf4j 依赖包 2021.08.19 -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
如果你遇到了如下的爆红
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
那么可能是slf4j-log4j12的scope为test,需要去除scope标签
二、log4j.properties参数介绍
log4j.properties需要在resources层级创建,如果放置的位置不对,可能会存在如下爆红
log4j:WARN No appenders could be found for logger (com.xxx.xxx.LoggerFactoryDemo).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
层级结构示范
log4j.properties文件
# all:输出所有类型的信息, A:输出方式为控制台输出
log4j.rootLogger=all, A
# 控制台打印
log4j.appender.A=org.apache.log4j.ConsoleAppender
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.B=org.apache.log4j.FileAppender
log4j.appender.B.File=E:\\young\\log.log
log4j.appender.B.layout=org.apache.log4j.SimpleLayout
# html方式输出
log4j.appender.C=org.apache.log4j.RollingFileAppender
log4j.appender.C.File=E:\\young\\log.html
log4j.appender.C.MaxFileSize=1000KB
log4j.appender.C.MaxBackupIndex=10
log4j.appender.C.layout=org.apache.log4j.HTMLLayout
log4j.appender.C.encoding=gbk
# txt方式输出
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=E:\\young\\log\\log.txt
#log4j.appender.D.File=E:\\hanweb\\log\\log.txt
log4j.appender.D.layout=org.apache.log4j.TTCCLayout
三、Demo
Code
public class LoggerFactoryDemo {
private static final Logger logger = LoggerFactory.getLogger(LoggerFactoryDemo.class);
public static void main(String[] args) {
logger.info("this is info");
logger.error("this is error");
logger.debug("this is debug");
}
}
ConsoleAppender
2021-08-19 11:21:56 [com.xxx.service.log.LoggerFactoryDemo]-[INFO] this is info
2021-08-19 11:21:56 [com.xxx.service.log.LoggerFactoryDemo]-[ERROR] this is error
2021-08-19 11:21:56 [com.xxx.service.log.LoggerFactoryDemo]-[DEBUG] this is debug