使用的Log4j的jar包: log4j-1.2.17.jar
數據庫環境: Mysql數據庫
我的Java項目目錄結構如下圖圖一所示:
圖一
在Mysql數據庫中建立數據庫 log4j,格式爲UTF-8。在 log4j數據庫中建立數據庫表 logs . logs建表語句如下:
CREATE TABLE `logs` (
`USER_ID` varchar(64) NOT NULL,
`DATED` datetime DEFAULT NULL,
`LOGGER` varchar(50) NOT NULL,
`LEVEL` varchar(10) NOT NULL,
`MESSAGE` varchar(1000) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
log4j.properties的配置信息如下所示:
# log4j日誌系統: 將日誌內容插入到數據庫中
# Define the root logger with appender file
log4j.rootLogger=DEBUG, DB, console
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
# Set JDBC URL
# log4j.appender.DB.URL=jdbc:mysql://127.0.0.1/log4j?useUnicode=true&characterEncoding=utf8
log4j.appender.DB.URL=jdbc:mysql://127.0.0.1/log4j
# Set Database Driver
log4j.appender.DB.driver=com.mysql.jdbc.Driver
# Set DataBase user name and password
log4j.appender.DB.user=root
log4j.appender.DB.password=123456
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO logs(USER_ID, DATED, LOGGER, LEVEL, MESSAGE) VALUES('%d{yyyy-MM-dd HH:mm:ss SSS}', '%d{yyyy-MM-dd HH:mm:ss}', '%C', '%p', '%m')
# log4j.appender.DB.sql=INSERT INTO logs VALUES('%x', '%d{yyyy-MM-dd HH:mm:ss}', '%C', '%p', '%m')
# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
# 將日誌輸出到控制檯
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}]-[%t]-[%F:%L]-[%p]-[%c]-%m%n
log4j.appender.console.encoding=UTF-8
在Java代碼中,建立一個 LogMysqlRun 文件,代碼如下所示:
package com.moon.log4j.main;
import org.apache.log4j.Logger;
/**
* 將日誌信息插入到數據庫表中。
*
* @author moon 2019/05/13 10:03
*
*/
public class LogMysqlRun {
private static Logger log = Logger.getLogger(LogMysqlRun.class);
public static void main(String[] args) {
log.debug("This is logger debug message.");
log.info("This is logger info message.");
System.out.println("---------------------- log4j-1.Xjar包測試完成 ----------------------");
}
}
運行 LogMysqlRun.java 中的 main函數後,運行結果如下圖圖二、圖三所示:
圖二
圖三
參考文章: Log4j日誌記錄到數據庫 , 需要注意的是,這篇文章中一些地方有小Bug! (^__^)