天天看點

log4j的使用(日志)

1.通過Maven引入jar包,在pom.xml中配置

log4j的使用(日志)
<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        <version>1.2.17</version>
        </dependency>
           

2.在resource檔案夾中,建立一個屬性檔案,檔案名必須叫做:log4j.properties,把這個檔案的編碼格式改成UTF-8(該檔案右鍵-->Properties)

log4j的使用(日志)

3.這邊除了路徑沒啥好改的:

### 設定###
log4j.rootLogger = debug,stdout,D,E

### 輸出資訊到控制擡 ###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 輸出DEBUG 級别以上的日志到=D://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 輸出ERROR 級别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
           

注意:

                日志級别有:

                    DEBUG:輸出調試資訊;指出細粒度資訊事件對調試應用程式是非常有幫助的。 

                    INFO: 輸出提示資訊;消息在粗粒度級别上突出強調應用程式的運作過程。 

                    WARN: 輸出警告資訊;表明會出現潛在錯誤的情形。 

                    ERROR:輸出錯誤資訊;指出雖然發生錯誤事件,但仍然不影響系統的繼續運作。 

                    FATAL: 輸出緻命錯誤;指出每個嚴重的錯誤事件将會導緻應用程式的退出。 

                這裡的級别從低到高:

                    debug是最低級别,當設定了debug級别之後,不論你調用的是哪一個方法都能夠被列印

                    如果你設定的是error級别,隻能夠列印error和fatal級别

                    依次推理...

4.測試:

            private static Logger logger = Logger.getLogger(LoginServlet.class);  // 設定成全局變量

            // 需要列印日志的位置:

            logger.debug("調用了LoginServlet的doPost方法...");

            logger.error("這條資訊被儲存在err檔案中...");

            logger.info("調用info");

            logger.warn("調用了warm");

日志架構在我們項目中主要用來列印錯誤資訊:  

       我們一般來說隻有和資料庫打交道的時候才有可能出現錯誤,是以我們的錯誤資訊一般來說在service層去做日志,然後隻要出錯就列印錯誤資訊到檔案中。

5.調用,我這邊在servlet中調用,一般來說在service層去做日志

log4j的使用(日志)

 第一種做法:

          我們在每一個service方法中都要對代碼進行try catch,然後将錯誤進行捕獲,記錄錯誤日志,但是如果真的這麼做了,就坑了,因為代碼備援(重複)很大,是以不推薦。

          解決方案:我們能不能讓系統在調用servie方法的時候,類似于添加一個監聽,如果service方法出錯了,然後能夠幫助我們統一在一個地方寫輸出日志的代碼呢?

          這種方案就是spring aop出現的理由   

aop:面向切面程式設計思維:

       隻要有service方法被調用,可以在service方法之前做一些操作,之後也可以做一些操作。

核心的部分:

切點, 通知,切面,目标,代理,織入。