我正在使用Log4j日誌框架將日誌插入到oracle數據庫中。但log4j屬性文件中的插入查詢需要花費大量時間來執行並使應用程序非常慢。當我刪除來自java代碼的日誌語句,應用程序工作正常。首先,我認爲插入到DataBase需要時間,但是將日誌寫入外部文件也需要很長時間。使用Log4j花費很長時間的日誌記錄
任何人都可以請建議一個解決方案?
謝謝, Dhaval Maheshwari。
我正在使用Log4j日誌框架將日誌插入到oracle數據庫中。但log4j屬性文件中的插入查詢需要花費大量時間來執行並使應用程序非常慢。當我刪除來自java代碼的日誌語句,應用程序工作正常。首先,我認爲插入到DataBase需要時間,但是將日誌寫入外部文件也需要很長時間。使用Log4j花費很長時間的日誌記錄
任何人都可以請建議一個解決方案?
謝謝, Dhaval Maheshwari。
在日誌記錄中包含了級別。例如在生產日誌中僅應用程序級別異常和錯誤[ERROR級別]。
如果是跟蹤日誌(如用戶操作),請不要將它們寫入文件,直接將它們添加到數據庫。希望這可以幫助。
如果你的應用程序正在開發中,那麼日誌級別應該是debug
,在記錄之前你應該檢查isDebugEnabled()然後記錄你的字符串。
但是,如果您的應用程序在生產中,那麼日誌級別應爲info
,並且您必須在日誌文件中記錄最少的信息。
始終使用ATLEAST兩個日誌級別應用程序中的一個debuggnig 模式(開發環境),另一個是生產方式和生產 日誌應該是最小的。
這是您可以加速應用程序的方式。如果你想你的日誌持續到數據庫,然後 創建
和第二件事一
scheduler task
,其職責是從平面文件只有一次在每天閱讀日誌 並持續到數據庫中,並安排這 運行。
我建議不要按照現在的技術。
首先,我不知道爲什麼你試圖在數據庫中記錄log4j的輸出。 無論如何,如果這是必要的嘗試這樣的事情。讓日誌文件按原樣寫入文件,然後運行一個線程,以便在文件作爲批處理關閉到數據庫時從磁盤轉儲此文件。
在這種情況下,您的應用程序將與數據庫的延遲分開。
還有其他解決方案也使用JMS。 您可以將它寫入JMS隊列,另一方面客戶可以讀取隊列並將其寫入數據庫。
這取決於您嘗試解決的問題的種類。
看到它有幫助