使用log4j,我曾經有一個appender直接登錄到我的數據庫中的某個表。 Appender如下:使用LogBack登錄數據庫
<appender name="DATABASE_LOG" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="URL" value="jdbc:postgresql://localhost/registrationdb" />
<param name="Driver" value="org.postgresql.Driver"/>
<param name="User" value="postgres"/>
<param name="Password" value="********/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="INSERT INTO user (user_id,creation_datetime,comment,user_type) VALUES ('%X{userId}','%d{yyyy-MM-dd HH:mm:ss}','%X{comment}','%X{userType}')"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
log4j是部署在JBoss 4.2上的Web應用程序的一部分。 log4j的問題在於它沒有關閉它打開的數據庫連接,甚至當我們在Web服務器上嘗試Postgres數據源時,它耗盡了池中的所有連接(這是一個完全不同的問題)。這就是爲什麼我們決定嘗試LogBack,看看它是否更好。在 格式無關的Java編程語言的
的DBAppender插入記錄事件分爲三個數據庫表:有趣的是,當我讀的logback文件,它明確提到以下。
這三個表是logging_event,logging_event_property和 logging_event_exception。它們必須在DBAppender可以使用之前存在 。
據我的理解,這意味着我綁定到這3個表登錄到數據庫。
搜索互聯網上的解決方案已經取得了所涉及延長AppenderBase
類,這是不方便的,我在這個階段很少的結果,因爲這意味着更多的測試將不得不做,因爲我們擁有了很多其他的要求測試。問題是:我可以爲LogBack定義一個appender,它的功能與我上面的log4j appender類似嗎?
非常感謝您的幫助。
我添加了文檔中建議的表格,並且在那裏成功記錄。但是我不能只將日誌記錄到自定義數據庫表中嗎? (通過自定義我的意思是我自己的表架構)。非常感謝幫忙。 – 2012-04-04 08:19:43
@MouhammedSoueidane:其實你可以自定義表名和列名,看看我的更新。有趣的是,我自己實現了這個功能並忘記了它;-)。 – 2012-04-04 08:31:35
非常感謝一個男人,這看起來真的很不錯。 – 2012-04-04 09:17:43