slf4j 和 log4j合用的(Maven)配置(轉)


 

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

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

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

之后就會添加三個包,


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. 在代碼中添加

import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class LoggerTest {

    private static final Logger logger=LoggerFactory.getLogger(LoggerTest.class);
    public static void main(String[] args) {
        logger.info("Now:{}",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }

}
輸出:
2014-12-09 09:18:09,480 INFO [LoggerTest][main] Now:2014-12-09 09:18:09

如果要輸出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的配置信息,在此要感謝前輩提供的資源

#輸出格式
#%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會拋出異常,但還是可以正常初始化。

 http://blog.csdn.net/anialy/article/details/8529188
http://www.cnblogs.com/softidea/p/4152397.html




Why do I see a warning about "No appenders found for logger" and "Please configure log4j properly"?
This occurs when the default configuration files log4j.properties and log4j.xml can not be found and the application performs no explicit configuration.
log4j uses Thread.getContextClassLoader().getResource() to locate the default configuration files and does not directly check the file system.
Knowing the appropriate location to place log4j.properties or log4j.xml requires understanding the search strategy of the class loader in use.
log4j does not provide a default configuration since output to the console or to the file system may be prohibited in some environments.

Also see FAQ: Why can't log4j find my properties in a J2EE or WAR application?.

http://logging.apache.org/log4j/1.2/faq.html#a3.5













免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM