1.Maven的dependencyhtml
2.log4j.properties的配置java
3.Junit的Test類web
4.web.xml的配置(非必要)spring
5.spring的db.config的配置(非必要)sql
一.maven的dependencyapache
<!--log4j--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
這些jar包均可以去maven中央倉庫下載到,http://search.maven.org/。mybatis
二.log4j.properties的配置。app
#全部日誌
log4j.rootLogger = DEBUG,stdout,file
log4j.logger.org.apache.ibatis=warn
log4j.logger.java.sql=warn
log4j.logger.org.springframework=warn
# Druid
log4j.logger.druid.sql=DEBUG
log4j.logger.druid.sql.DataSource=warn
log4j.logger.druid.sql.Connection=warn
log4j.logger.druid.sql.Statement=DEBUG
log4j.logger.druid.sql.ResultSet=warn
#設置包名的輸出級別
log4j.logger.cn.wdq=DEBUG,wdq
#控制檯輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n
#全部文件輸出
log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = ${webApp.root}/wdq_logs/allDEBUG.log
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.name = fileLogDemo
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n
log4j.appender.file.append = true
#wdq下全部包的文件輸出
log4j.appender.wdq = org.apache.log4j.FileAppender
log4j.appender.wdq.File = ${webApp.root}/wdq_logs/package_wdq.log
log4j.appender.wdq.Encoding=UTF-8
log4j.appender.wdq.name = fileLogDemo
log4j.appender.wdq.Threshold=DEBUG
log4j.appender.wdq.layout=org.apache.log4j.PatternLayout
log4j.appender.wdq.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n
log4j.appender.wdq.append = true
log4j.properties是默認加載的文件名,若是要另外起名字,還須要在web.xml裏面進行配置,若是是測試用的,最好用默認的名字,這跟Spring的Application.xml有點像。
log4j.rootLogger = DEBUG,stdout,file中的DEBUG是日誌輸出優先級,從高到低依次爲error,warn,info,debug,低級別的能夠輸出高級別的日誌,如debug能夠輸出任何優先級的
日誌,可是info只能輸出info,warn,error級別的日誌。stdout,file這兩個有點相似於變量名,能夠自定義名稱,能夠用這兩個東西進行控制檯或者文件的輸出。好比控制檯的爲
log4j.appender.stdout=org.apache.log4j.ConsoleAppender;保存爲文件的爲log4j.appender.file = org.apache.log4j.FileAppender。還有另外三種按天生成的,流形式生成的,
滾動形式的,這裏就不介紹了(反正我也忘了...),具體能夠去官方文檔看一下appender的幾種輸出形式。值得一提的是1.文件編碼(Encoding):這個要定義爲UTF-8否則輸出到文件裏面有時候部分類
的編碼不一致,有致使部分亂碼。2.文件的名字和存儲路徑(File):如上,我寫的是${webApp.root}/wdq_logs/package_wdq.log,這個實際上是在web.xml裏面定義好的。若是沒有定義,那麼
將會輸出到你項目的磁盤根目錄。文件名的格式有經常使用的.log和.html,推薦用.log,方便項目裏面的全部人查看。3.(追加方式append):設置屬性爲true,若是是false的話就會覆蓋掉原先的日誌而不是
追加到後面。
三.Junit的測試類的輸出
package cn.wdq.test;
import org.apache.log4j.Logger;
import org.junit.Test;
public class LoggerTest {
Logger logger= Logger.getLogger(LoggerTest.class);
@Test
public void printLogger(){
logger.error("直接輸出吧");
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
控制檯輸出效果webapp
文件輸出效果
四.web.xml的配置(非必要)
<!--log4j--> <!--給日誌配置路徑--> <context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param> <!--<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j2.xml</param-value> </context-param>--> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
1.使用默認的名字(log4j.properties),就不用配置log4jConfigLocation(上面註釋掉的部分)。否則就指定路徑(log4j2.xml是我如今用不到的部分),我如今放的是在根目錄,直接classpath:log4j2.xml。
classpath是指定路徑的格式,此外還有classpath.*:log4j2.xml。他們兩個的區別是classpath是默認加載第一個,加載到就結束。classpath.*還會搜索後面還有沒有匹配項。
2.若是指定絕對路徑就不用配置webAppRootKey,這個是把文件放到webapp下面的。value值能夠自定義,可是name值只能是webAppRootKey。配置了以後就要配置listener監聽,否則就忽略。
官方的說的默認加載順序爲1.* 2.*(前面這兩個我忘了...與java相關的就後面的兩個)3.log4j.properties和3.log4j.xml。如今網上有不少老舊的文章是1.X的版本的xml配置方法。
我這裏要說的是2.X的。他們二者的區別以下
1.X
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </layout> </appender> <category name="org.apache.log4j.xml"> <priority value="info" /> </category> <Root> <priority value ="debug" /> <appender-ref ref="STDOUT" /> </Root> </log4j:configuration>
2.Xmaven
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </Console> </Appenders> <Loggers> <Logger name="org.apache.log4j.xml" level="info"/> <Root level="debug"> <AppenderRef ref="STDOUT"/> </Root> </Loggers> </Configuration>
5、Spring的db.config的配置(非必要)
我是啓用了mybatis和druid鏈接池,因此會加一句
filters: stat,log4j
這樣能夠監聽到log4j日誌。