1. 程式人生 > >用Log4j自動生成日誌(多種方式)輸出到檔案、資料庫等

用Log4j自動生成日誌(多種方式)輸出到檔案、資料庫等

   Log4j是Apache基金會的一個專案,它能為Java開發著提供功能強大使用方便的各種日誌處理.當然它的版本不限於Java,還有C/C++等主流語言.我覺得它就象一把非常實用的鋒利小刀,讓我們的寫程式時更加如魚得水.

          Log4j輸出的資訊分如下幾類:ALL,DEBUG,INFO,ERROR,FATAL,級別從低到高,輸出的內容是從多到少.從字面意思即可看出大概,ALL指輸出所有資訊;DEBUG指除錯資訊;INFO指一般資訊;ERROR指錯誤資訊;FATAL指致命的錯誤資訊。

        輸出的資訊級別和內容我們可以在程式裡面設定,但缺點就不夠靈活,並且無法在程式執行期間進行引數調整。通過XML或Property配置檔案可以在外部控制Logger的輸出,原理都一樣的,只是表現形式不一樣,看個人的習慣了。下面主要講一下如何使用Property檔案來靈活配置Log4j的輸出。

        在Log4j中你可以讓資訊輸出到控制檯(Console)、檔案、遠端資料數等中的其中一個或多個當中。

       首先我們要先宣告資訊輸出的級別,並且 為了能把資訊輸出到指定的目的地,我們要指定輸出方案,如下所示:

     log4j.rootLogger = DEBUG, A1,A4

    DEBUG為輸出資訊的級別,A1,A4分別為輸出方案的名稱,下面我們來定義方案的具體引數。

     指定該輸出方案的資訊輸出目的地為控制檯:

      log4j.appender.A1 = org.apache.log4j.ConsoleAppender

      設定輸出的佈局為模式佈局:
      log4j.appender.A1.layout = org.apache.log4j.PatternLayout

     指定模式的具體引數:
     log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n

     每個引數前要加%來說明,其中:

     %d:日期(date),如:yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等

     %t:執行緒名稱(Thread)

      %-5p:資訊優先順序(Priority),寬度為5,左對齊。如DEBUG,FATAL等

       %m:輸出資訊(Message)

       %n:回車換行

        還有其它幾個象%c,%C,%F等

      上面的方案A1指的是把資訊輸出到控制檯,並且輸出的格式按指定的格式輸出。

       我們還可以指定把資訊輸出到檔案當中,如下為普通檔案輸出方案:

      log4j.appender.A2 = org.apache.log4j.RollingFileAppender
      log4j.appender.A2.File = logs//test.log
      log4j.appender.A2.MaxFileSize = 1MB
      log4j.appender.A2.MaxBackupIndex = 3
      log4j.appender.A2.layout = org.apache.log4j.PatternLayout
      log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n

      輸出指定的檔案test.log當中,並且指定該檔案最大不超過1MB,超過之後將清除後再寫入。當然也可以直接用FileAppender,不進行Rolling,那麼所以的日誌資訊都將追加到原資訊的後面。MaxBackupIndex指的是最大備份數目。以上面檔案為例,當test.log到達1MB,則它直接被修改成test.log.1,如果這個檔案已存在,則修改為test.log.2,直到MaxBackupIndex。新的日誌資訊,將重新生成檔案test.log。當下一次達到1MB時,此時test.log.1,test.log.2,test.log.3都已存在,則直接把test.log.3刪除,把test.log修改成test.log.3。

       把資訊輸出到遠端資料庫當中:

      # 定義A3輸出到資料庫
      log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
      log4j.appender.A3.BufferSize = 40
      log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver
      log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb
      log4j.appender.A3.User =
      log4j.appender.A3.Password =
      log4j.appender.A3.layout = org.apache.log4j.PatternLayout
      log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')

      指定輸出方案為JDBCAppender,即能過JDBC把日誌自動寫入到遠端資料庫當中。BufferSize指定緩衝區的大小,當輸出內容達到緩衝區的大小時,就把資料寫入資料庫一次。下面的引數依次為指暄資料庫驅動名稱、資料庫URL地址、資料庫登入使用者名稱和密碼,模式佈局和Select語句。
     

     我們也可以把資訊輸出到HTML檔案當中,並且是按時間段自動生成檔案,比如,每隔一個小時或一天、半天生成一個HTML檔案:

      log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
      log4j.appender.A4.File = logs//log.html
      log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'
      log4j.appender.A4.layout = org.apache.log4j.HTMLLayout

      第一個引數為指定輸出方案為按日期滾動的檔案方案。第二個引數指定檔名,第三個指定日期模式,最後一個指定佈局為HTML佈局。上面的設定會每隔一個小時產生一個HTML檔名,檔名為:log.html.2006-03-24-08.html的樣子。
    

       完整的配置檔案log4j.properties如下:

      log4j.rootLogger = DEBUG, A1,A4

      log4j.appender.A1 = org.apache.log4j.ConsoleAppender
      log4j.appender.A1.layout = org.apache.log4j.PatternLayout
      log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n


      log4j.appender.A2 = org.apache.log4j.RollingFileAppender
      log4j.appender.A2.File = logs//test.log
      log4j.appender.A2.MaxFileSize = 1KB
      log4j.appender.A2.MaxBackupIndex = 3
      log4j.appender.A2.layout = org.apache.log4j.PatternLayout
      log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n

      #11區 定義A3輸出到資料庫
      log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
      log4j.appender.A3.BufferSize = 40
      log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver
      log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb
      log4j.appender.A3.User =
      log4j.appender.A3.Password =
      log4j.appender.A3.layout = org.apache.log4j.PatternLayout
      log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')


      log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
      log4j.appender.A4.File = logs//log.html
      log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'
      log4j.appender.A4.layout = org.apache.log4j.HTMLLayout

      在程式裡面只需宣告使用Property配置檔案來控制輸出就行了,如下所示:

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

      public static void main(String[] args) {
           PropertyConfigurator.configure("conf//log4j.properties");
           logger.debug("啟動..." );

      }

     有了Log4j,我們完全可以拋棄System.out了,用它吃力又不討好,何苦呢?

相關推薦

Log4j自動生成日誌(多種方式)輸出檔案資料庫

   Log4j是Apache基金會的一個專案,它能為Java開發著提供功能強大使用方便的各種日誌處理.當然它的版本不限於Java,還有C/C++等主流語言.我覺得它就象一把非常實用的鋒利小刀,讓我們的寫程式時更加如魚得水.           Log4j輸出的資訊分如下幾類:ALL,DEBUG,INFO,E

log4j生成日誌文件的問題

intel logger light logs pac 目錄 files oot erro 直接看我的註解吧 註意地址的斜杠,還有地址別寫什麽相對地址了,這包太老了,服務器update一下兼容問題就出來了。 #第一個參數定義達到什麽程度就輸出 第二第三....第N 定義輸

Webservice實現與調(基於Spring的多種方式

ddr dem pid pos simple 下載 bus 代理 println 一、Webservice實現 實現方式分類 1. spring實現 bean配置 <bean class="org.springframework.remoting.

一個很好自動生成工具——mybatis generator

led ron 很好 user runtime rim mod 文件 path mybatis generator-自動生成代碼 準備材料:   一個文件夾,一個數據庫的驅動包,mybatis-generator-core-1.3.5.jar,一條生成語句   如圖:(我用

springboot添加log4j日誌配置log4j.xml生成日誌文件

ota urn version xmlns private 1.0 owa ram .json 第一步:添加pom文件依賴 <!-- log4j --> <dependency> <

Wings與parasoft c++ test在單元測試自動生成能力的比對

RoCE 相同 c++ 比較 關心 分享 多少 自己 ××× 作為一個軟件測試培訓講師,主要側重在白盒測試培訓方面,尤其對C++test比較擅長。最近發現市面上跳出一款Wings工具,據說1分鐘可以自動生成100萬行測試代碼,性能方面大大超越C++ test,就想著抽空來×

介面自動化測試框架開發 (pytest+allure+aiohttp+ 自動生成)

近期準備優先做介面測試的覆蓋,為此需要開發一個測試框架,經過思考,這次依然想做點兒不一樣的東西。 介面測試是比較講究效率的,測試人員會希望很快能得到結果反饋,然而介面的數量一般都很多,而且會越來越多,所以提高執行效率很有必要 介面測試的用例其實也可以用來兼做簡單的壓力測試,而壓力測

Idea Maven自動生成帶有sh和bat啟動指令碼的java應用

java做web開發,導致很多人不知道使用Java如何開發普通的專案,這裡我們做個簡單的介紹。 java專案一般都是使用指令碼啟動,比如windows上的bat檔案和linux上的sh檔案,而要寫這些檔案常常需要花費不少精力,很多人肯能會改這種檔案,但是要憑空寫一個就比較費勁。現在有maven外掛幫

MyEclipse自動生成hibernate對映檔案和實體類

建web工程,使用Hibernate的時候,在工程裡一個一個建立實體類和對映檔案太麻煩,特別是大專案,好幾百張表,每個表跟每個表的對應關係很負責,一張表中可能有超級多的欄位,浪費時間,還容易出錯! 建立完成後還要將一個個的對映檔案配置到hibernate.cfg.xml中,

MyEclipse自動生成Hibernate對映檔案和實體類(Javabean)

做web專案,使用SSH框架時,資料庫中許多的表都需要在專案中建立一個實體類和對映檔案,如果專案中資料表太多,一個一個在專案中建立,肯定是非常浪費時間的,有時候還會寫錯。其實,用MyEclipse可以直接生成資料庫中所有資料表的對映檔案和實體類,簡單快捷。 資

mybatislog4j列印sql日誌

一、列印sql到控制檯 1、配置log4j.properties log4j.rootLogger=DEBUG, Console log4j.appender.Console=org.apache.log4j.ConsoleAppender  log4j.appender.

resinMyEclipse自動生成的web專案部署後無法訪問

web.xml檔案內容如下 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:x

Navicat自動生成SQL語句

    用MySql時,最頭痛的莫過於寫sql語句,用Navicat這個工具可以自動生成。使用如下: 1、新建表語句,使用“SQL預覽”功能     在Navicat中新建一張表,填上自己所需要的資訊,如下圖所示:     在點選儲存之前,點選“SQL預覽”,即可看

軟體測試自動生成技術(一)

軟體測試這一環節在軟體開發週期中不可或缺。然而軟體測試卻花費軟體開發超過一半的成本。因此利用軟體測試用例自動生成技術來降低軟體開發成本並提高軟體開發效率就變得至關重要。目前軟體測試用例自動生成技術可大體分為五類: 1. 符號執行及程式結構覆蓋測試(symbo

自動生成騎行軌跡動畫檔案

一、安裝和註冊: 1、手機安裝“行者騎行”。 2、註冊成為使用者。二、記錄路線: 1、點選”運動”   2、點選開始: 3、停止記錄 4、檢視記錄    5、點選“檢視3d軌跡”:      6、分享到

【MyBatis Generator】程式碼自動生成工具 generatorConfig.xml配置檔案詳解

MyBatis Generator官網地址:http://www.mybatis.org/generator/index.html MyBaris Generator中文地址:http://mbg.cndocs.ml/ 在MBG中,最主要也最重要的,就是generatorConfig.xml

mybatis自動生成dao, model, mapper xml檔案

用mybatis的時候,手寫xml或model檔案是一個力氣活,所以可以用mybatis-gennerator外掛自動生成mybatis所需要的dao、bean、mapper xml檔案 (原文地址:http://blog.csdn.net/tolcf/article/details/50835

webpack自動生成專案中的HTML檔案

1.HTML外掛的使用 安裝外掛 npm install html-webpack-plugin –save-dev 配置webpack.config.js  安裝完成後需要在webpack.config.js中引用並且初始化外掛,具體的可以檢視  API

基於Vue-Cli 打包自動生成/抽離相關配置檔案

背景 基於Vue-cli 專案產品部署,涉及到的互動的地址等配置資訊,每次都要重新打包才能生效,極大的降低了效率。我們的目的是讓專案實施的小夥伴重新快樂起來。網上實現的方式,都是半自動化的,還需要重新修改。 需求點 配置化:打包後的配置檔案可二次修改 配置自動生成:vue-cli 提

log4j.xml 中配置多個輸出檔案

現在的專案中,對於日誌的配置,我們有時候需要配置對應不同的輸出日誌檔案,例如按照模組劃分,按照功能劃分,分別輸出到不同的日誌檔案中,下面介紹一下,怎麼配置不同的輸出日誌檔案。 下面是一整塊的log4j.xml配置。如果對怎麼配置spring 和 log4j不瞭解的話,可以參