<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    licweiwei

    Commons-logging + Log4j 使用簡記

    通過網(wǎng)上查找資料和項目中的一些應(yīng)用,記錄一下Commons-logging + Log4j 的使用方法。
    現(xiàn)在很多都是使用Commons-logging + Log4j 結(jié)合使用,而不是全部使用Log4j。common-logging,就可以自行決定在自己的應(yīng)用中采用何種實現(xiàn),并跟所依賴的jar包統(tǒng)一起來。
    據(jù)common-logging的官方文檔,決定實現(xiàn)方式的策略如下:
    1.首先查找org.apache.commons.logging.Log屬性,該屬性可以在java代碼中設(shè)置,更常見的是在classpath下的common-logging.properties文件中進(jìn)行設(shè)置
    2.在系統(tǒng)屬性中查找org.apache.commons.logging.Log
    3.如果類路徑中有l(wèi)og4j的jar包,則采用log4j實現(xiàn)
    4.如果jdk版本為1.4,采用Jdk14Logger
    5.采用common-logging提供的SimpleLog

    所以只要在classpath中加入Log4j的jar,Commons-logging 后臺使用的還是Log4j作為日志實現(xiàn)類。單獨使用Log4j的時候需要初始化:

      

                                        import org.apache.log4j.Logger;

                                        import org.apache.log4j.PropertyConfigurator;

                                        public class Log4j {

                                            static Logger logger = Logger.getLogger(Log4j .class);

                                            public static void main(String args[]) {

                                            PropertyConfigurator.configure("log4j.properties");

                                             logger.debug("DEBUG");  

                                             }

                                          }


     

      使用Commons-logging + Log4j 實現(xiàn)方法:.
                         import org.apache.commons.logging.Log;
                         import org.apache.commons.logging.LogFactory;

                    class TestLog{
                            public static Log log = LogFactory.getLog(TestLog.class);
                            public static void testLog(){
                            log.debug("test Commons-logging + Log4j");
                                  }
                          }
    只要classpath有Log4j的jar,其實就是使用Log4j作為實現(xiàn)類,但是要注意的是log4j.properties一定要在classpath中,之前一直不知道程序是如何去找到log4j.properties的,后來才發(fā)現(xiàn)是通過classpath去找的,如果classpath中沒有具體配置,就是到當(dāng)前類所在目錄下去查找(不包括包文件夾)。

    log4j.properties簡介:
    log4j.rootCategory=debug, stdout, R  
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    # Pattern to output the caller's file name and line number.  
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n  
    log4j.appender.R=org.apache.log4j.RollingFileAppender  
    log4j.appender.R.File=example.log  
    log4j.appender.R.MaxFileSize=100KB  
    # Keep one backup file  
    log4j.appender.R.MaxBackupIndex=1  
    log4j.appender.R.layout=org.apache.log4j.PatternLayout  
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n  
    說明:  
    ①log4j.rootCategory = [ level ] , appenderName, appenderName,  
    其中,level 是日志記錄的優(yōu)先級,分為OFF,FATAL,ERROR,WA R N,INFO,DEBUG, 
    ALL或者您定義的級別.Log4j建議只使用四個級別,優(yōu)先級從高到低分別是ERROR, 
    WA R N,INFO,DEBUG.通過在這里定義的級別,您可以控制到應(yīng)用程序中相應(yīng)級別的日 
    志信息的開關(guān).比如在這里定義了INFO級別,則應(yīng)用程序中所有DEBUG級別的日志信息 
    將不被打印出來.appenderName就是指定日志信息輸出到哪個地方.您可以同時指定多個 
    輸出目的地.  
    ②配置日志信息輸出目的地Appender,其語法為  
    log4j.appender.appenderName = fully.qualified.name.of.appender.class  
    log4j.appender.appenderName.option1 = value1  

    log4j.appender.appenderName.option = valueN  
    其中,Log4j提供的appender有以下幾種:  
    org.apache.log4j.ConsoleAppender(控制臺),  
    org.apache.log4j.FileAppender(文件),  
    org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件), 
    org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時候產(chǎn)生一個新的文件),  
    org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)  
    ③配置日志信息的格式(布局),其語法為:  
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  
    log4j.appender.appenderName.layout.option1 = value1  

    log4j.appender.appenderName.layout.option = valueN  
    其中,Log4j提供的layout有以下幾種:  
    org.apache.log4j.HTMLLayout(以HTML表格形式布局),  
    org.apache.log4j.PatternLayout(可以靈活地指定布局模式),  
    org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),  
    org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時間,線程,類別等等信息)  
    ④Log4J采用類似C語言中的printf函數(shù)的打印格式格式化日志信息,打印參數(shù)如下:  
    %m 輸出代碼中指定的消息  
    %p 輸出優(yōu)先級,即DEBUG,INFO,WA R N,ERROR,FATAL  
    %r 輸出自應(yīng)用啟動到輸出該log信息耗費的毫秒數(shù)  
    %c 輸出所屬的類目,通常就是所在類的全名  
    %t 輸出產(chǎn)生該日志事件的線程名  
    %n 輸出一個回車換行符,Windows平臺為"\r\n",Unix平臺為"\n"  
    %d 輸出日志時間點的日期或時間,默認(rèn)格式為ISO8601,也可以在其后指定格式,  
    比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921  
    %l 輸出日志事件的發(fā)生位置,包括類目名,發(fā)生的線程,以及在代碼中的行數(shù). 
    這里有2點要說明的,
    一是關(guān)于log4j.appender.R.File=example.log ,如果不給定絕對路徑的話,log文件的默認(rèn)路徑是user.dir,可以通過System.getProperty("user.dir")來得到。
    而是關(guān)于%5p [%t] (%F:%L) - %m%n   5代表優(yōu)先級字符串占用幾個位置,%F代表文件名,%L代表行號。

    使用xml來充當(dāng)配置,沒有去看過,所以也不了解,但是在網(wǎng)上也看到過依賴jar包里的log4j配置將自己應(yīng)用的log4j.properties屏蔽掉的問題,說是classpath中的jxls-core-0.9.5.jar中的log4j.xml,該配置優(yōu)先于他的log4j.properties,導(dǎo)致log4j.properties設(shè)置失效,不過不太了解是什么原因,但是有人給出了解決方案,

    手工重新 configure一下:

    org.apache.log4j.LogManager.resetConfiguration();
    然后:

    org.apache.log4j.PropertyConfigurator.configure("c:/yourlog4j.properties");

    或者

    org.apache.log4j.xml.DOMConfigurator.configure("c:/yourlog4j.xml");







    posted on 2007-10-22 20:39 licwei 閱讀(766) 評論(0)  編輯  收藏 所屬分類: Technology


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产成人综合亚洲亚洲国产第一页| 国语成本人片免费av无码| 亚洲精品在线播放| 免费看一区二区三区四区| 国产91精品一区二区麻豆亚洲| 美女视频黄a视频全免费网站色| 九九九精品成人免费视频| 激情内射亚洲一区二区三区爱妻| 最新亚洲人成无码网www电影| 黄网址在线永久免费观看| 色偷偷亚洲第一综合| 国产免费观看黄AV片| 日本一区二区在线免费观看 | 午夜免费国产体验区免费的| 四虎永久精品免费观看| 日韩a毛片免费观看| 久久精品国产亚洲精品| 黄 色一级 成 人网站免费| 亚洲av无码成h人动漫无遮挡 | 2020久久精品国产免费| 亚洲a级在线观看| 最近中文字幕免费mv视频8| 国产成人 亚洲欧洲| 国产精品亚洲精品日韩已方| 国产又黄又爽又大的免费视频| 亚洲AV无码乱码在线观看富二代 | 亚洲a∨无码一区二区| 亚洲免费日韩无码系列| 日韩免费高清播放器| 亚洲美女大bbbbbbbbb| 午夜精品在线免费观看| 久久亚洲精品中文字幕| 国产精品69白浆在线观看免费| 亚洲乱亚洲乱妇24p| 亚洲女同成av人片在线观看| 91成人在线免费视频| 精品国产日韩亚洲一区91| 日本红怡院亚洲红怡院最新| 四虎在线最新永久免费| 亚洲自偷自拍另类12p| 免费大片黄在线观看yw|