2010-05-10 68 views
1

在我的軟件,我用libxml2xmlsec操作(顯然)XML數據結構。我主要使用XSD模式驗證,到目前爲止,它運行良好。禁用調試輸出和xmlsec

當由客戶端的數據結構輸入不匹配XSD架構,libxml2的(或xmlsec)輸出一些調試字符串到控制檯。

下面是一個例子:

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

雖然這些字符串是爲了調試的目的有用我不想讓他們出現,polute控制檯輸出在發佈的軟件。到目前爲止,我找不到這樣做的官方方式。

你知道如何抑制調試輸出或(甚至更好)將其重定向到自定義函數嗎?

非常感謝。

回答

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) 
+0

+1:謝謝!文件確實很糟糕。我會在今天晚上檢查這是否有效。我會及時向大家發佈。 – ereOn 2010-05-10 09:59:40

+1

@ereOn:太棒了。我添加了一個更通用的功能,以及我發現的應用程序代碼,可以幫助您。通過在libxml的網站上搜索,似乎也有大量的郵件列表帖子。 – unwind 2010-05-10 11:01:43

+0

它就像一個魅力!再次感謝你 ;) – ereOn 2010-05-12 07:04:16