参考

https://zhuanlan.zhihu.com/p/32475568

https://www.cnblogs.com/Jason-Xiang/p/6549608.html

概述

  • SLF4J 是一个日志抽象库,需要配置日志实现层使用

  • Log4j 是一个日志实现库

SLF4J 和 Log4j「推荐」

抽象层 + 中间层 + 实现层的组合,分别对应:slf4j-api、slf4j-log4j12、log4j

maven

只包含slf4j-log4j12即可

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.0-alpha1</version>
</dependency>

<!-- 也可以引入 lombok , 使用注解 @SLF4j 方式使用 slf4j -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

SLF4J 和 slf4j-simple

抽象层 + 实现层的组合

maven

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.8.0-beta0</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.8.0-beta0</version>
</dependency>

使用

方式一

1
2
3
4
5
6
7
8
9
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}

方式二

1
2
3
4
5
6
@Slf4j

log.info("xxx");

# 带参数
log.info("为{}生成主键值->:{}", name, id);

log4j.properties

参考《Log4j》

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
log4j.rootLogger=DEBUG,Console,Daily_Rolling

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.Threshold=DEBUG
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n

#输出到滚动文件
log4j.appender.Daily_Rolling=org.apache.log4j.DailyRollingFileAppender
#DEBUG以上才使用
log4j.appender.Daily_Rolling.Threshold=DEBUG
#滚动文件名
log4j.appender.Daily_Rolling.File=./logs/log4j.log
#追加方式
log4j.appender.Daily_Rolling.Append=true
#滚动日期格式
log4j.appender.Daily_Rolling.DatePattern=.yyyy-MM-dd
# 输出日期格式
log4j.appender.Daily_Rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.Daily_Rolling.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n