Frage

In meiner Software verwende ich libxml2 und xmlsec (natürlich) XML-Datenstrukturen zu manipulieren. Ich hauptsächlich XSD-Schema-Validierung verwenden und so weit, es funktioniert gut.

Wenn die Datenstruktur Eingabe durch den Client nicht mit dem XSD-Schema, libxml2 (oder xmlsec) Ausgabe einig Debug-Strings an die Konsole.

Hier ist ein Beispiel:

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

Während diese Strings sind nützlich für Debugging-Zwecke, Ich möchte, dass sie nicht erscheinen und verschmutzen die Konsolenausgabe in der freigegebenen Software . Bisher konnte ich keine offiziellen Weg, dies zu tun finden.

Wissen Sie, wie die Debug-Ausgabe zu unterdrücken, oder (noch besser), um eine benutzerdefinierte Funktion umgeleitet werden?

Vielen Dank.

War es hilfreich?

Lösung

würde ich die xmlSetGenericErrorFunc() und xmlThrDefSetGenericErrorFunc() Funktionen untersuchen, sie scheinen recht. Die Dokumentation ist .. spärlich, aber.

Hier einige Python-Code, der zu verwenden scheint diese Funktionen zu deaktivieren Fehlermeldungen, sehen die entsprechenden Zeilen wie diese:

# 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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top