我想讓log4j 2.0在我的應用程序上運行。我的應用程序,我設置兩個記錄器:log4j 2.0 JDBC ConnectionFactory到DB2不向記錄表添加記錄(log4j2.xml)
一個輸出的東西到控制檯,所以你可以看到發生了什麼事情。
另一個將測試運行結果輸出到DB2表。這是一個完全不同的日誌,用於跟蹤測試運行時的結果和結果。
我的問題在於DB2記錄器。我似乎無法將記錄寫入表格。我知道我快到了,因爲:
- 如果我在配置過程中使用了虛擬庫或表名稱,log4j錯誤。
- 如果我在配置過程中使用虛假用戶名或密碼,log4j錯誤。
- 如果我對文件使用沒有權限的有效用戶標識/密碼,則在配置期間會出現log4j錯誤。
- 但是......如果所有這些事情都是正確的,沒有錯誤,但也沒有記錄寫入。
在控制檯中,我可以看到log4j的重新配置正確完成:
2013-10-02 11:31:06,261 DEBUG Reconfiguration completed
所以....我缺少什麼?在log4j網站上沒有太多的文檔。
下面是在應用程序代碼:
public static void testExists(String myProcedure) {
final Logger console = LogManager.getLogger(myProcedure);
final Logger mytestlog = LogManager.getLogger(myProcedure);
.... yadda, yadda, yadda ....
.... and then finally, call the loggers with ....
console.info("== write this to the console ==");
mytestlog.info("== write this to the db2 log ==");
}
這裏是我的log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%date{HH:mm:ss.SSS} %-5level{lowerCase=false} %logger{36} | %msg%n"/>
</Console>
<JDBC name="jdbc" tableName="vqccommon.sptestlog">
<ConnectionFactory class="foo.bar.chew.Log4jConnect" method="log4jConnect" />
<Column name="timestamp" isEventTimestamp="true" />
<Column name="testclass" pattern="%class" />
... some other columns ....
</JDBC>
</Appenders>
<Loggers>
<Logger name="sptestlog" level="trace">
<AppenderRef ref="jdbc" ></AppenderRef>
</Logger>
<Root level="trace">
<AppenderRef ref="Console" ></AppenderRef>
</Root>
</Loggers>
</Configuration>
你在調用這個:'LogManager.getLogger(myProcedure);'你不需要2個變量來存儲它,你可以有一個'最後的Logger LOG' – porfiriopartida
https://code.google.com/p/log4jdbc-log4j2 /檢查'使用Log4j 2'部分 – porfiriopartida
您好。我不明白這是如何回答我的問題。看起來您正在推薦另一個庫,而不是用於配置多個日誌的格式。也許我錯過了一些東西。 – bobanahalf