Log4j官方文檔翻譯(9、輸出到數據庫)

log4j提供了org.apache.log4j.JDBCAppender對象,能夠把日誌輸出到特定的數據庫。java

經常使用的屬性:mysql

  • bufferSize 設置buffer的大小,默認是1
  • driver 設置數據庫的驅動字符串,好比sun.jdbc.odbc.OdbcDriver
  • layout 設置使用的layout,默認是org.apache.log4j.PatternLayout
  • password 設置數據的密碼
  • sql 設置每第二天志產生的時候執行的sql語句,能夠是INSERT,UPDATE,DELETE
  • URL 設置JDBC URL
  • user 設置數據庫的用戶名

在輸出日誌以前,還應該建立數據庫中的表,執行下面的SQL語句
sql


CREATE TABLE LOGS
(USER_ID VARCHAR(20) NOT NULL,
DATED
DATE NOT NULL,
LOGGER VARCHAR(50) NOT NULL,
LEVEL
VARCHAR(10) NOT NULL,
MESSAGE VARCHAR(1000) NOT NULL
);

log4j.properties文件配置

下面是JDBCAppender的相關配置:
數據庫


log4j.rootLogger = DEBUG, DB
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://localhost/DBNAME
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=user_name
log4j.appender.DB.password=password
log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

對於MySQL數據庫來講,當建立了LOGS表後你還須要使用dbname,user_name,password。apache

若是在xml中配置能夠參考以下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="DB" > <param name="url" value="jdbc:mysql://localhost/DBNAME"/> <param name="driver" value="com.mysql.jdbc.Driver"/> <param name="user" value="user_id"/> <param name="password" value="password"/> <param name="sql" value="INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')"/> <layout > </layout> </appender> <logger name="log4j.rootLogger" additivity="false"> <level value="DEBUG"/> <appender-ref ref="DB"/> </logger> </log4j:configuration>app

代碼樣例

下面這個例子,在java代碼中使用了Log4j輸出:
url


import org.apache.log4j.Logger;
import java.sql.;
import java.io.
;
import java.util.;
public class log4jExample{
/
Get actual class name to be printed on */
static Logger log = Logger.getLogger(log4jExample.class.getName());
public static void main(String[] args)throws IOException,SQLException{
log.debug("Debug");
log.info("Info");
}
}

編譯和執行

執行後就能夠查詢結果了:
debug

mysql > select * from LOGS;+---------+------------+--------------+-------+---------+| USER_ID | DATED| LOGGER| LEVEL | MESSAGE |+---------+------------+--------------+-------+---------+|| 2010-05-13 | log4jExample | DEBUG | Debug||| 2010-05-13 | log4jExample | INFO | Info|+---------+------------+--------------+-------+---------+2 rows in set (0.00 sec)
相關文章
相關標籤/搜索