在我的软件中,我使用libxml2和xmlsec来操纵(显然)XML数据结构。我主要使用XSD模式验证,到目前为止,它运行良好。
当客户端输入的数据结构与XSD架构不匹配时,libxml2(或xmlsec)会将一些调试字符串输出到控制台。
以下是一个例子:
Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^
虽然这些字符串有用用于调试目的,我不希望它们出现并在发布的软件中对控制台输出进行判断。到目前为止,我找不到正式的方法。
您知道如何抑制调试输出或(甚至更好)将其重定向到自定义函数吗?
非常感谢。
答案 0 :(得分:3)
我会调查xmlSetGenericErrorFunc()
和xmlThrDefSetGenericErrorFunc()
函数,它们似乎是正确的。但是文档是稀疏的。
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 :(得分:0)
我正在为某些C代码寻找相同的解决方案:
static void __xmlGenericErrorFunc (void *ctx, const char *msg, ...) { }
xmlSetGenericErrorFunc(nil, __xmlGenericErrorFunc);
xmlThrDefSetGenericErrorFunc(nil, __xmlGenericErrorFunc);