2011-05-13 128 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