禁用 libxml2 和 xmlsec 中的调试输出
题
在我的软件中,我使用 libxml2 和 xmlsec 操作(显然)XML 数据结构。我主要使用 XSD 模式验证,到目前为止,它运行良好。
当客户端输入的数据结构与 XSD 架构不匹配时,libxml2(或 xmlsec)会向控制台输出一些调试字符串。
这是一个例子:
Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^
虽然这些字符串是 有用 出于调试目的, 我不希望它们出现并污染已发布软件中的控制台输出. 。到目前为止,我找不到执行此操作的官方方法。
您知道如何抑制调试输出或(甚至更好)将其重定向到自定义函数吗?
非常感谢。
解决方案
我会调查 xmlSetGenericErrorFunc()
和 xmlThrDefSetGenericErrorFunc()
函数,它们看起来是正确的。文档是..不过,稀疏。
这里 有一些 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)
不隶属于 StackOverflow