2

私のソフトウェアでは、libxml2xmlsecを使用して (明らかに) XML データ構造を操作しています。私は主に XSD スキーマ検証を使用していますが、これまでのところうまく機能しています。

クライアントによって入力されたデータ構造が XSD スキーマと一致しない場合、libxml2 (または xmlsec) はいくつかのデバッグ文字列をコンソールに出力します。

以下に例を示します。

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

これらの文字列はデバッグ目的には役立ちますが、リリースされたソフトウェアのコンソール出力に表示されて汚染されることは望ましくありません。これまでのところ、これを行う公式の方法を見つけることができませんでした。

デバッグ出力を抑制する方法、または (さらに良い) カスタム関数にリダイレクトする方法を知っていますか?

どうもありがとう。

4

2 に答える 2

4

xmlSetGenericErrorFunc()およびxmlThrDefSetGenericErrorFunc()関数を調査しますが、それらは正しいようです。ただし、ドキュメントは..まばらです。

これらの関数を使用してエラー メッセージを無効にしているように見える 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)
于 2010-05-10T09:31:09.140 に答える