Domanda

Nel mio programma, io uso libxml2 e xmlsec di manipolare (ovviamente) le strutture di dati XML. Io uso principalmente XSD convalida dello schema e, finora, funziona bene.

Quando l'ingresso struttura di dati da parte del cliente non corrisponde allo schema XSD, libxml2 (o xmlsec) uscita alcune stringhe di debug alla console.

Ecco un esempio:

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

Mentre quelle stringhe sono utile per scopi, il debug non voglio che appaiano e inquinare l'output della console nel software rilasciato . Finora, non riuscivo a trovare un modo ufficiale per farlo.

Sai come sopprimere l'output di debug o (ancora meglio) per reindirizzare ad una funzione personalizzata?

Molte grazie.

È stato utile?

Soluzione

vorrei indagare le funzioni xmlSetGenericErrorFunc() e xmlThrDefSetGenericErrorFunc(), sembrano destra. La documentazione è scarsa .., però.

Qui è qualche codice Python che sembra l'uso queste funzioni per disattivare i messaggi di errore, le linee in questione simile a questa:

# 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top