【问题标题】:Disable debug output in libxml2 and xmlsec在 libxml2 和 xmlsec 中禁用调试输出
【发布时间】:2011-02-17 13:58:34
【问题描述】:

在我的软件中,我使用libxml2xmlsec 来操纵(显然)XML 数据结构。我主要使用 XSD 模式验证,到目前为止,它运行良好。

当客户端输入的数据结构与 XSD 架构不匹配时,libxml2(或 xmlsec)会向控制台输出一些调试字符串。

这是一个例子:

Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^

虽然这些字符串对调试很有用,但我不希望它们出现并污染已发布软件中的控制台输出。到目前为止,我找不到这样做的官方方法。

您知道如何抑制调试输出或(甚至更好)将其重定向到自定义函数吗?

非常感谢。

【问题讨论】:

    标签: c++ c debugging libxml2 xmlsec


    【解决方案1】:

    我会调查@987654321@@987654322@ 函数,它们似乎是正确的。不过,文档很稀疏。

    Here 是一些 Python 代码,似乎使用这些函数来禁用错误消息,相关行如下所示:

    # dummy function: no debug output at all
    cdef void _nullGenericErrorFunc(void* ctxt, char* msg, ...) nogil:
        pass
    
    # setup for global log:
    
    cdef void _initThreadLogging():
        # disable generic error lines from libxml2
        xmlerror.xmlThrDefSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
        xmlerror.xmlSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
    

    【讨论】:

    • +1:谢谢!当然,文档真的很烂。我今晚会检查这是否有效。我会及时通知你。
    • @ereOn:太棒了。我添加了一个看起来更通用的函数,以及我发现应该对您有所帮助的示例代码。通过在 libxml 的网站上搜索,似乎还可以找到大量的邮件列表帖子。
    【解决方案2】:

    我正在为一些 C 代码寻找相同的解决方案:

    static void __xmlGenericErrorFunc (void *ctx, const char *msg, ...) { }
    xmlSetGenericErrorFunc(nil, __xmlGenericErrorFunc);
    xmlThrDefSetGenericErrorFunc(nil, __xmlGenericErrorFunc);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 2012-08-07
      • 2015-07-29
      • 1970-01-01
      • 2013-01-21
      • 2021-09-25
      相关资源
      最近更新 更多