【问题标题】:Logging and filtering using log4cxx使用 log4cxx 记录和过滤
【发布时间】:2011-05-13 13:23:12
【问题描述】:

我正在开发需要日志记录和过滤功能的应用程序。 我正在使用 C++。我开始了解 log4cxx 支持日志记录。

我在过滤时遇到了困难。

我有五个字段

  1. MACID
  2. 日期和时间
  3. 命令类型
  4. 状态
  5. 短信消息

我需要将这 5 个字段存储在日志文件中,并根据以下过滤选项对其进行过滤。日志记录和过滤将在运行时本身完成。一旦文件大小达到 10 MiB,它将从头开始重写文件。

过滤选项
1. MACID
2.日期和时间

过滤可以通过过滤一个或两个来完成。 结果应该返回日志文件中的所有字段。

  1. 是否可以使用 log4CXX 在日志文件中存储多个字段?
  2. 如何根据上述标准过滤信息?
  3. 我是否需要编写自己的过滤器类来继承现有的过滤器类?
  4. 是否需要编写自定义记录器类来在日志文件中存储 5 个字段?

【问题讨论】:

  • 按记录器过滤?按日志级别?或者可能是日志消息中的某些内容?你必须更具体地说明你想要什么。
  • 如果你使用 C++ 并且想要一个好的记录器机制,也许你想试试 log4cpp.sourceforge.net。
  • @Chris_vr 你的问题还不清楚。你想过滤什么?通常,日志框架会根据日志级别的严重性进行过滤。
  • 查看除了上述字段之外,日志文件中还有其他字段,例如 event text msg 我想过滤此字段
  • @Chris_vr 你能说得更具体点吗?您想在运行时过滤或过滤已经存在的日志文件? 5 个字段是什么意思。 Log4cxx 只接受两个参数。一个关卡和一条消息。

标签: c++ logging log4cxx


【解决方案1】:

我曾经遇到过与第 1 点和第 4 点类似的问题。我阅读了 log4cxx 代码并找到了可能的解决方案。一位工作伙伴测试了解决方案并推进了它。他的结论可以在here找到。

我们在 log4cxx 邮件列表中询问这是否是正确的解决方案,这就是我们 got 的答案。我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我不认为 log4cxx 是适合您的任务的工具,我不确定这是否可以使用 log4cxx 完成。

    您可以从自定义附加程序、您自己的日志级别和您自己的过滤器开始。
    让它运行,你需要设置一个日志级别,确定应该使用哪个过滤器字段,当你更改过滤器时,你需要清除过滤器并设置一个新的。 然后您可以提取日志字符串,搜索您的过滤器并让它决定您是否要输出日志消息。

    【讨论】:

    • 有没有其他方法可以做到这一点。我的意思是有没有其他免费的第三方免费 api 我可以用于此目的。
    • 您可以使用 log4cxx。始终记录您的字段并尝试使用链锯过滤输出。 logging.apache.org/chainsaw/index.html。您可以使用正则表达式进行一些体面的过滤。
    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 2015-04-25
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2015-06-01
    • 2010-09-22
    • 2017-04-25
    相关资源
    最近更新 更多