log4j + slf4j的maven配置

JeaJain 8年前發布 | 1K 次閱讀 Java log4j SLF4j Maven

添加logger的日志輸出,下面是配置信息供備忘

步驟:

1. 在Maven的porn.xml 文件中添加dependency如下

<dependency>  
    <groupId>org.slf4j</groupId>  
    <artifactId>slf4j-log4j12</artifactId>  
    <version>1.7.2</version>  
</dependency>

之后就會添加三個包,

slf4j-api-1.6.1.jar
log4j-1.2.17.jar
slf4j-log4j12-1.7.2.jar

2. 之后在項目的資源文件目錄下添加log4j.properties

log4j.properties

#config root logger  
log4j.rootLogger = INFO,system.out  
log4j.appender.system.out=org.apache.log4j.ConsoleAppender  
log4j.appender.system.out.layout=org.apache.log4j.PatternLayout  
log4j.appender.system.out.layout.ConversionPattern=MINAServer Logger-->%5p{%F:%L}-%m%n  

#config this Project.file logger  
log4j.logger.thisProject.file=INFO,thisProject.file.out  
log4j.appender.thisProject.file.out=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.thisProject.file.out.File=logContentFile.log  
log4j.appender.thisProject.file.out.layout=org.apache.log4j.PatternLayout

3. 在代碼中添加

private static final Logger logger = LoggerFactory.getLogger(MINAServer.class);
logger.info("now {}" , "starting server");

輸出如下: log4j-output

如果要輸出logger文件:

log4j.rootLogger=INFO,R,stdout    

log4j.appender.stdout=org.apache.log4j.ConsoleAppender    
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern=Logger-->%5p{%F:%L}-%m%n   

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender    
log4j.appender.R.File=../logs/log  
log4j.appender.R.layout=org.apache.log4j.PatternLayout  
log4j.appender.R.layout.ConversionPattern=Logger-->%5p{%F:%L}-%m%n

下面是log4j.properties的配置信息,在此要感謝前輩提供的資源

log4j輸出格式

  • #%m 輸出代碼中指定的消息
  • #%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
  • #%r 輸出自應用啟動到輸出該log信息耗費的毫秒數
  • #%c 輸出所屬的類目,通常就是所在類的全名
  • #%t 輸出產生該日志事件的線程名
  • #%n 輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n”
  • #%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
  • #%l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)

格式化例子:

log4j.appender.thisProject.file.out.layout.ConversionPattern=log4j-->%d{yyyy MMM dd HH:mm:ss,SSS}%5p{%F\:%L}-%m%n

注意:

1. 信息格式化的小知識

這些參數中間可能會參雜一些數字比如:%5p它的意思就是在輸出此參數之前加入多少個空格,還有就是里面的“\”的作用是轉義字符

2. log4j.properties文件放置位置

(1)在java project項目中,它放置的位置是在項目的根目錄下而不是在項目的src目錄下。
(2)在javaweb項目中它放置的位置是在src目錄下,因為這個時候tomcat會去默認的加載它的,不需要我們去手動的加載log4j的配置文件,只需要根據配置獲取自己需要的logger實例即可,由此我們可以知道如果我們使用的不是tomcat容器的話,是不是需要自己手動加載或者至少要配置一下呢?比如使用Websphere等非apache服務器。

3. 對于java web項目里面的日志的位置配置

(1) 如果是要指定日志文件的位置為D盤下的log.txt文件。

log4j.appender.thisProject.file.out.File=d:\\log.txt

(2)如果指定日志文件的位置為當前的tomcat的工作目錄下的某個文件

log4j.appender.thisProject.file.out.File=${catalina.home}/logs/logs_tomcat.log

4. log4j的加載機制

log4j.properties加載機制?其實log4j.properties只是log4j的配置文件。程序啟動時,log4j組件去讀log4j.properties,和讀取普通配置文件沒多大區別。獲取用戶配置的一些log4j的屬性值,調用想應該的方法為log4j屬性設置。

把log4j.properties當作一個struts.xml或者一個hibernate-cfg.xml就可以了。但不同的是,log4j不像struts和hibernate,它不是一個獨立的組件,沒法自己完成初始化,一般都是什么組件需要它 就去初始化。比如,hibernate默認的日志組件就是log4j,在hibernate初始化的時候它會去初始化log4j。如果你沒配置log4j.properties,hibernate會拋出異常,但還是可以正常初始化。

 本文由用戶 JeaJain 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!