2011-05-13 95 views
5

我正在處理需要記錄和過濾功能的應用程序。 我正在使用C++。我開始瞭解log4cxx支持日誌記錄。使用log4cxx記錄和過濾

我在過濾中遇到困難。

我有五場

  1. MACID
  2. 日期和時間
  3. 命令類型
  4. 狀態
  5. 文本消息

我需要存儲在這5場日誌文件並根據以下篩選選項對其進行篩選。記錄和過濾將在運行時完成。一旦文件大小達到10 MiB,它將從頭開始重寫文件。

篩選選項
1. MACID
2.日期和時間

濾波可以通過過濾之一或兩者來完成。 結果應該返回日誌文件中的所有字段。

  1. 是否可以使用log4CXX在日誌文件中存儲多個字段?
  2. 如何根據上述標準篩選信息?
  3. 我是否需要編寫自己的過濾器類繼承現有的過濾器類?
  4. 我是否需要編寫自定義記錄器類來存儲日誌文件中的5字段?
+2

按記錄器過濾?按日誌級別?或者可能通過日誌消息中的某些內容?你必須對你想要的更具體。 – 2011-05-13 13:27:37

+0

我已更新該問題。 – 2011-05-13 13:30:46

+0

@Chris_vr你的問題目前還不清楚。你想過濾什麼?通常,日誌框架根據日誌記錄級別的嚴重性進行篩選。 – 2011-05-13 13:46:04

回答

0

我不認爲log4cxx是您的任務的正確工具,而且我不確定是否可以使用log4cxx完成此操作。

您可以從自定義appender和自己的日誌級別以及您自己的過濾器開始。
是否讓它運行,你需要設置一個日誌級別來確定應該使用哪個過濾器字段,並且當你更改過濾器時,你需要清除過濾器並設置一個新的過濾器。 然後,您可以提取日誌字符串,搜索您的過濾器並讓它決定是否要輸出日誌消息。

+0

是否有任何其他方式這樣做。我的意思是有其他免費的第三方免費API我可以用它來達到此目的。 – 2011-05-23 13:27:44

+0

你可以用log4cxx去。始終記錄您的字段並嘗試使用鏈鋸過濾輸出。 http://logging.apache.org/chainsaw/index.html。你可以使用正則表達式來進行一些體面的過濾。 – mkaes 2011-05-23 14:02:01

2

我面臨一次類似的問題比第1和第4點。我讀了log4cxx代碼,我發現了一個可能的解決方案。一個工作夥伴測試瞭解決方案並取得了進展。他的結論可以找到here

我們在log4cxx郵件列表中詢問是否是正確的解決方案,這是我們got的答案。我希望有所幫助。

+0

謝謝....我會盡快回復你fco.javier.sanz我先試試 – 2011-05-26 06:45:48