Question

Dans mon logiciel, j'utilise libxml2 et xmlsec à manipuler (évidemment) des structures de données XML. J'utilise principalement la validation du schéma XSD et jusqu'à présent, il fonctionne bien.

Lorsque l'entrée de la structure de données par le client ne correspond pas au schéma XSD, libxml2 (ou xmlsec) sortie des cordes de débogage à la console.

Voici un exemple:

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

Bien que ces chaînes sont utile pour le débogage, Je ne veux pas qu'ils apparaissent et la sortie de polluer la console dans le logiciel libéré . Jusqu'à présent, je ne pouvais pas trouver un moyen officiel de le faire.

Savez-vous comment supprimer la sortie de débogage ou (encore mieux) pour le rediriger vers une fonction personnalisée?

Merci.

Était-ce utile?

La solution

J'enquêter sur les fonctions de xmlSetGenericErrorFunc() et xmlThrDefSetGenericErrorFunc(), ils semblent justes. La documentation est .. clairsemée, cependant.

est un code Python qui semble utiliser ces fonctions pour désactiver les messages d'erreur, les lignes concernées se présentent comme suit:

# 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top