Отключить отладочный вывод в libxml2 и xmlsec - PullRequest
1 голос
/ 10 мая 2010

В моем программном обеспечении я использую libxml2 и xmlsec для манипулирования (очевидно) структурами данных XML. В основном я использую проверку схемы XSD, и пока она работает хорошо.

Если структура данных, введенная клиентом, не соответствует схеме XSD, libxml2 (или xmlsec) выводит некоторые строки отладки на консоль.

Вот пример:

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

Хотя эти строки полезны для целей отладки, Я не хочу, чтобы они появлялись и выводили данные консоли в выпущенном программном обеспечении . До сих пор я не мог найти официальный способ сделать это.

Знаете ли вы, как подавить выходные данные отладки или (еще лучше) перенаправить их в пользовательскую функцию?

Большое спасибо.

1 Ответ

3 голосов
/ 10 мая 2010

Я бы исследовал функции <a href="http://xmlsoft.org/html/libxml-xmlerror.html#xmlSetGenericErrorFunc" rel="nofollow noreferrer">xmlSetGenericErrorFunc()</a> и <a href="http://xmlsoft.org/html/libxml-globals.html#xmlThrDefSetGenericErrorFunc" rel="nofollow noreferrer">xmlThrDefSetGenericErrorFunc()</a>, они кажутся правильными. Документация ... хоть и немного ...

Здесь - это некоторый код 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)
...