Log4j入門學習

1、  安裝Log4jhtml

Log4j網址:http://logging.apache.org/log4j/1.2/java

只須要把Log4j的jar包拷進lib就行。sql

 

2、  配置文件寫法數據庫

Log4j配置文件配置思路主要圍繞這三部分展開,它們分別是:根目錄、目的地和輸出樣式apache

記住三個類:Logger(完成日誌記錄,設置日誌信息級別)、Appender(決定日誌去向,終端、DB、硬盤)、Layout(決定日誌輸出的樣式)oracle

 

 

(一)Properties配置文件(鍵=值)app

 

一、根目錄eclipse

根目錄是用來配置等級(Level)和根的,其語法格式爲:yii

log4j.rootLogger=[level],appenderName,appenderName,…

 

關於level的優先級:佈局

level是日誌記錄的優先級,能夠是OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL、自定義級別。優先級的從高到低的順序爲:ERROR、WARN、INFO、DEBUG。(舉例子:若是選的是WARN,則日誌會記錄自身及比它優先級高的項,即:ERROR、WARN)

關於appender:

appender用於區分不一樣的輸出,它是能夠任意命名的,若是你既想在日誌文件輸出,又想在控制檯輸出,那麼就要設置兩個appender了。

例子:

log4j.rootLogger=ERROR, appender1
log4j.rootLogger=INFO, appender2, appender3

 

 

二、目的地

顧名思義,目的地就是設定日誌輸出的地方,其格式爲:

log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option=valueN

例子:

log4j.appender.appender1=org.apache.log4j.FileAppender
log4j.appender.appender1.File=./logs/log4jDemo.log

 

 

三、輸出樣式

輸出樣式的的格式和配置目的地同樣:

log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option=valueN

 

例子:

log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout

 

 

(二)XML配置文件

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="appender4"
        class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="./logs/log4jDemo2.html" />
        <param name="MaxFileSize" value="1MB" />
        <param name="MaxBackupIndex" value="5" />
        <layout class="org.apache.log4j.HTMLLayout">
        </layout>
    </appender>

    <root>
        <level value="debug" />
        <appender-ref ref="appender4" />
    </root>
</log4j:configuration>

3、  配置解析

 

一、log4j.rootLogger=[日誌級別], appender1, appender2

1)rootLogger默認對整個工程有效。

2)若只想對某個包有效:log4j.logger.package_name=info, package1

3)若要提升性能,能夠對先進行判斷:

if(log.isDebugEnabled()) {
    log.debug("DEBUG!");
}

 

二、log4j.appender.appender1=org.apache.log4j.日誌輸出地

1)ConsoleAppender(控制檯)

2)FileAppender(文件)

3)DailyRollingFileAppender(天天產生一個日誌文件)

4)RollingFileAppender(文件大小到達指定尺寸時產生一個新的文件)

5)WriteAppender(將日誌信息以流格式發送到任意指定的地方)

6)JDBCAppender(將日誌信息保存到數據庫中)

 

三、log4j.appender.appender1.File=文件目錄及文件

四、log4j.appender.appender1.MaxFileSize=最大文件大小

五、log4j.appender.appender1.MaxBackupIndex=備份文件個數

六、log4j.appender.ServerDailyRollingFile.DatePattern=日誌後綴格式目前這個我不知道怎麼用

 

七、log4j.appender.appender1.layout=org.apache.log4j.日誌樣式

1)HTMLLayout

2)SimpleLayout(日誌信息級別、信息字符串)

3)TTCCLayout(日誌產生時間、執行緒[執行的線程]、類別等)

4)PatternLayout(靈活地指定佈局格式,經常使用

 

八、log4j.appender.appender1.layout.ConversionPattern=日誌輸出格式

Log4j ConversionPattern參數的格式含義

格式名 含義
%c 輸出日誌信息所屬的類的全名
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy-MM-dd HH:mm:ss },輸出相似:2002-10-18- 22:10:28
%f 輸出日誌信息所屬的類的類名
%l 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
%m 輸出代碼中指定的信息,如log(message)中的message
%n 輸出一個回車換行符,Windows平臺爲「rn」,Unix平臺爲「n」
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。若是是調用debug()輸出的,則爲DEBUG,依此類推
%r 輸出自應用啓動到輸出該日誌信息所耗費的毫秒數
%t 輸出產生該日誌事件的線程名

 

九、log4j.appender.ServerDailyRollingFile.Append=true追加

4、例子

(一)全局輸出到控制檯、硬盤

Log4jDemo:

package com.kwan.log4jDemo;

import org.apache.log4j.Logger;

public class Log4jDemo {
    
    private static Logger logger = Logger.getLogger(Log4jDemo.class);
    public static void main(String[] args) {
       //記錄debug級別的信息
        logger.debug("Demo--This is debug message.");
       //記錄info級別的信息
        logger.info("Demo--This is info message.");
       //記錄error級別的信息
        logger.error("Demo--This is error message.");
    }
}

一、Properties文件配置

log4j.properties

log4j.rootLogger=debug, appender1, appender2

log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n

log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.File=./logs/log4jDemo.log
log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout

結果:

1)console:

image

2)文件:

image

image

二、XML文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    
    <appender name="appender3"
        class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.SimpleLayout">
        </layout>
    </appender>
    
    <appender name="appender4"
        class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="./logs/log4jDemo.html" />
        <param name="MaxFileSize" value="1MB" />
        <param name="MaxBackupIndex" value="5" />
        <layout class="org.apache.log4j.HTMLLayout">
        </layout>
    </appender>

    <root>
        <level value="debug" />
        <appender-ref ref="appender3" />
        <appender-ref ref="appender4" />
    </root>

</log4j:configuration>

結果:

1)console:

image

2)文件:

image

image

 

 

(二)全局輸出到數據庫

JDBCAppender類用於把日誌記錄寫入數據庫:

Property

描述

bufferSize

設置緩衝區的大小,默認大小爲1。

driver

設置驅動程序類爲指定的字符串。若是沒有指定驅動程序類,默認爲sun.jdbc.odbc.JdbcDriver

layout

設置要使用的佈局。默認佈局是org.apache.log4j.PatternLayout

password

 

sql

指定SQL語句在每次記錄事件時執行。

URL

設置JDBC URL

user

設置數據庫用戶名

一、建立表(使用的是Oracle數據庫)

create table log4jDemo (
logDate date not null,
logger varchar(50) not null,
logLevel varchar(10) not null,
message varchar(1000) not null
);

二、Properties文件

log4j.rootLogger=debug, appender5

log4j.appender.appender5=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.appender5.URL=jdbc:oracle:thin:@localhost:1521:orcl
log4j.appender.appender5.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.appender5.user=kwan
log4j.appender.appender5.password=12345678
log4j.appender.appender5.sql=INSERT INTO log4jDemo VALUES(to_date('%d{yyyy-MM-dd hh:mm:ss}', 'YYYY-MM-DD hh:mi:ss') ,'%C','%p','%m')
log4j.appender.appender5.layout=org.apache.log4j.PatternLayout

結果:

image

三、XML文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="appender6" class="org.apache.log4j.jdbc.JDBCAppender">
        <param name="URL" value="jdbc:oracle:thin:@localhost:1521:orcl" />
        <param name="driver" value="oracle.jdbc.driver.OracleDriver" />
        <param name="user" value="kwan" />
        <param name="password" value="12345678" />
        <param name="sql" value="INSERT INTO log4jDemo VALUES(to_date('%d{yyyy-MM-dd hh:mm:ss}', 'YYYY-MM-DD hh:mi:ss') ,'%C','%p','%m')" />
        <layout class="org.apache.log4j.PatternLayout">
        </layout>
    </appender>


    <root>
        <level value="debug" />
        <appender-ref ref="appender6" />
    </root>

</log4j:configuration>

結果:(很遺憾,我這個寫法未能成功把日誌信息寫入Oracle數據庫,如今把報錯貼下來。報錯顯示的是ORA-00900: 無效 SQL 語句,Properties使用同樣的語句爲何就能夠呢?想不明白,等之後想明白了再補充吧。

console:

image

5、參考資料

一、主題:log4j詳解與實戰

二、eclipse, Log4j配置(真心的詳細~)

三、Log4j寫入數據庫詳解

四、java中使用log4j將日誌信息寫入數據庫中

五、log4j日誌記錄到數據庫

相關文章
相關標籤/搜索