Desative a saída de depuração em libxml2 e xmlsec
Pergunta
No meu software, eu uso libxml2 e XMLSEC manipular (obviamente) estruturas de dados XML. Eu uso principalmente a validação do esquema XSD e, até agora, funciona bem.
Quando a entrada da estrutura de dados do cliente não corresponde ao esquema XSD, o libxml2 (ou xmlsec) saiam algumas seqüências de depuração para o console.
Aqui está um exemplo:
Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^
Enquanto essas cordas são útil Para fins de depuração, Eu não quero que eles apareçam e poluem a saída do console no software liberado. Até agora, não consegui encontrar uma maneira oficial de fazer isso.
Você sabe como suprimir a saída de depuração ou (ainda melhor) para redirecioná -lo para uma função personalizada?
Muito Obrigado.
Solução
Eu investigaria o xmlSetGenericErrorFunc ()
e xmlthrdefsetGenericerrorFunc ()
Funções, elas parecem certas. A documentação é .. esparsa, no entanto.
Aqui é algum código Python que parece usar essas funções para desativar as mensagens de erro, as linhas relevantes se parecem com a seguinte:
# 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)