1 日志使用規(guī)范
應(yīng)用中不應(yīng)該直接使用日志系統(tǒng)(Log4j,Logback)中的API,而應(yīng)該依賴使用日志框架SLF4J中的API,使用門面模式的日志框架,有利于維護(hù)和各個(gè)類的日志處理方式統(tǒng)一
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Aoe.class);
2?日志配置統(tǒng)一版本
<properties>
<log4j2.version>2.8.2</log4j2.version>
</properties>
3?log4j適配log4j2框架
3.1??排除所有直接間接依賴的log4j的包
因?yàn)椴荒鼙WClog4jxxx.jar在log4j-1.2-api之后執(zhí)行,不排除會(huì)導(dǎo)致log4j的日志不能輸出。
<exclusions>
?<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
3.2?Log4j2的jar包版本要統(tǒng)一
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j2.version}</version>
</dependency>
3.3?Log4j適配log4j2的jar包與log4j2的jar包版本一致
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
4?slf4j+log4j2
使用SLF4j+Log4j2時(shí)使用的橋接包是log4j-slf4j-impl
jar包版本同log4j2的版本
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
5?其他需要排除的包
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
??</exclusions>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
6?常見錯(cuò)誤原因定位
6.1?SLF4J: Class path contains multiple SLF4J bindings.
slf4j-log4j12包沖突,排除即可
6.2?找不到log的配置文件
a)Log日志的配置文件log4j.xml查看是否存在
b)自定義log配置文件ConfigurationSource,注意這之前不要有日志的初始化及使用
7?其他常見的log相關(guān)包說(shuō)明
7.1?slf4j-log4j12
slf4j與log4j的橋接包
7.2?slf4j-jdk14
slf4j到j(luò)ava.util.logging的橋接包
7.3?log4j-to-slf4j
將log4j2的接口適配到slf4j上,不能和log4j-slf4j-impl同時(shí)存在
7.4 slf4j-jcl
將slf4j適配到JCL上
7.5?Logback
Logback是由log4j創(chuàng)始人設(shè)計(jì)的另一個(gè)開源日志組件,詳細(xì)見官網(wǎng) http://logback.qos.ch
7.6?logback-classic
將slf4j適配到logback上