Отключить вывод отладки в libxml2 и xmlsec
Вопрос
В моем программном обеспечении я использую libxml2. а также xmlsec. манипулировать (очевидно) структуры данных XML. В основном я использую проверку XSD схемы и до сих пор, хорошо работает.
Когда ввод структуры данных, вводимый клиентом, не соответствует XSD Schema, LibxML2 (или XMLSEC) выводит некоторые отладочные струны на консоль.
Вот пример:
Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^
В то время как эти строки полезный для целей отладки, Я не хочу, чтобы они появлялись и полируют консольную вывод в выпущенном программном обеспечении. Отказ Пока что я не мог найти официальный способ сделать это.
Знаете ли вы, как подавить вывод отладки или (даже лучше), чтобы перенаправить его на пользовательскую функцию?
Большое спасибо.
Решение
Я бы расследовал xmlsetgenericeRororfunc ()
а также XMLTRTRDEFSETGENERICERRORFUNC ()
Функции, они кажутся правильными. Документация происходит .. Резет, хотя.
Здесь Это какой-то код 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)