在Log4J使用筆記中沒有怎麼寫執行個體,那麼在這篇中我將Log4j的一個完整應用執行個體寫出。
在Log4J使用筆記中我們已經知道同一個日誌資訊可以同時輸出到多個輸出目的地。那麼在下面的例子中我將示範將日誌資訊同時輸出到控制台,檔案和資料庫中。首先建立一張表,如下:log4j.sql
create table log4j
(
logId int not null auto_increment,--流水號
createDate varchar(45) default null,--日誌產生時間
thread varchar(45) default null,--當前線程
level varchar(45) default null,--當前日誌的層級
class varchar(45) default null,--組建記錄檔的類
message varchar(245) default null,--日誌具體資訊
primary key(logId)
)
編寫設定檔myLog4j.properties
#定義3個輸出端
log4j.rootCategory=INFO,A1,A2,A3
#定義A1輸出到控制器
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#定義A1的配置模式為PaternLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# 定義A1的輸出格式
log4j.appender.A1.layout.ConversionPattern=%4p [%t] (%F:%L) - %m%n
#定義A2輸出到檔案
log4j.appender.A2=org.apache.log4j.RollingFileAppender
#定義A2輸出到哪個檔案
log4j.appender.A2.File=./Sample.log
#定義A2輸出檔案的最大長度
log4j.appender.A2.MaxFileSize = 1KB
#定義A2的備份檔案數
log4j.appender.A2.MaxBackupIndex = 3
#定義A2的配置模式為PatternLayout
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
#定義A2的輸出模式
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
#定義A3輸出到資料庫
log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A3.URL=jdbc:mysql://localhost:3306/study
log4j.appender.A3.driver=com.mysql.jdbc.Driver
log4j.appender.A3.user=root
log4j.appender.A3.password=root
#定義A3的布局和執行的SQL語句
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=INSERT INTO log4j(createDate,thread,level,class,message) values(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')
最後測試程式如下:
public static void sample()
{
Logger logger = Logger.getLogger(Log4jTest.class);
PropertyConfigurator.configure("myLog4j.properties");
logger.debug("Here is DEBUG messgae");
logger.info("Here is INFO message");
logger.warn("Here is WARN message");
logger.error("Here is ERROR message");
logger.fatal("Here is FATAL message");
}
這樣當我們運行該程式的時候會同時將上述日誌資訊轉入到三個地方:
控制台:
資料庫:
檔案:
我們已經看到出現Sample.log檔案,該檔案我們在配置中指定,當然你也可以修改其它地方,另外Log4j的設定檔也放在項目根目錄下。
同時當我們多運行幾次該程式時,Sample.log超過1KB時就會將該檔案自動改名,同時再將日誌記錄到新的Sample.log檔案中,如下: