# SLF4J
## slf4j的日志級(jí)別分為五種:
<font color='red'>info、debug须妻、error菇篡、warn顿涣、trane</font>
常用的是這是三個(gè):
- <font color='red'>info </font>:一般處理業(yè)務(wù)邏輯的時(shí)候使用,就跟 system.err打印一樣酝豪,用于說明此處是干什么的涛碑。slf4j使用的時(shí)候是可以動(dòng)態(tài)的傳參的,使用占位符 {} 孵淘。后邊一次加參數(shù)蒲障,會(huì)挨個(gè)對(duì)應(yīng)進(jìn)去。
- <font color='red'>debug</font>: 一般放于程序的某個(gè)關(guān)鍵點(diǎn)的地方瘫证,用于打印一個(gè)變量值或者一個(gè)方法返回的信息之類的信息
- <font color='red'>error</font>: 用戶程序報(bào)錯(cuò)揉阎,必須解決的時(shí)候使用此級(jí)別打印日志。
不常用的有:
- <font color='red'>warn</font>:警告背捌,不會(huì)影響程序的運(yùn)行毙籽,但是值得注意。
- <font color='red'>trane</font>:一般不會(huì)使用毡庆,在日志里邊也不會(huì)打印出來坑赡,好像是很低的一個(gè)日志級(jí)別。
#### log4j.properties的配置文件
```properties
# 日記級(jí)別(單個(gè)級(jí)別) 文件/控制臺(tái)
log4j.rootLogger=debug, stdout,file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Rirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=test.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
```
#### Log4jTest.java
```Java
public class Log4jTest {
? ? ? ? private static final Logger logger = LoggerFactory.getLogger(Log4jTest.class);
? ? ? ? public static void main(String[] args) {
? ? ? ? ? ? logger.debug("debug");
? ? ? ? ? ? logger.warn("warm");
? ? ? ? ? ? logger.error("error");
? ? ? ? }
}
```
<font color='cornflowerblue'>在`log4j.xml`的配置文件中添加將日志文件插入數(shù)據(jù)庫的配置,同時(shí)需要將第一行配置文件改為:</font>
```properties
# 日記級(jí)別(單個(gè)級(jí)別) 文件/控制臺(tái)
log4j.rootLogger=debug, stdout,file,datasource
```
```properties
#下面是配置將日志信息插入數(shù)據(jù)庫么抗,
#配置輸出目標(biāo)為數(shù)據(jù)庫(假如要將日志在控制臺(tái)輸出垮衷,配置為log4j.appender. stdout =org.apache.log4j.ConsoleAppender;將日志寫入文件乖坠,配置為log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
#這樣的配置在許多地方都要有搀突,需要可查有關(guān)資料),當(dāng)然你也可以自己擴(kuò)展org.apache.log4j.jdbc.JDBCAppender這個(gè)類,只需要在這里配置就可以了例如我們配置我自己擴(kuò)展的MyJDBCAppender熊泵,配置為#log4j.appender.db=com.neam.commons.MyJDBCAppender
log4j.appender.datasource=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.datasource.layout=org.apache.log4j.PatternLayout
log4j.appender.datasource.driver=com.mysql.jdbc.Driver
#定義什么級(jí)別的錯(cuò)誤將寫入到數(shù)據(jù)庫中
log4j.appender.datasource.BufferSize=1
#設(shè)置緩存大小仰迁,就是當(dāng)有1條日志信息是才忘數(shù)據(jù)庫插一次,我設(shè)置的數(shù)據(jù)庫名和表名均為user
log4j.appender.datasource.URL=jdbc\:mysql\://localhost\:3306/user?characterEncoding\=UTF8&zeroDateTimeBehavior\=convertToNull
log4j.appender.datasource.user=root
log4j.appender.datasource.password=root
log4j.appender.datasource.sql=insert into user (class,method,create_time,log_level,log_line,msg) values ('%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%l','%m')
```