2

InfologData から情報ログを復元することは可能ですか? コードを検討する

static void Job12(Args _args)
{
    InfologData infologData;
    ;

    // here we report something
    error("something awful");
    error("something terrible");
    setprefix("scary");
    warning("mouse");

    // here we get infolog data
    infologData = infolog.infologData();

    infolog.clear(0);

    // SOME CODE

    // here we view infolog once again
}       

// SOME CODEinfologData から infolog に「何かひどい」、「何かひどい」、「怖い\tmouse」を復元する代わりに、何を書けばよいですか?

私の目標は、何らかの操作を実行し、情報ログをデータベースに保存し、必要なときにユーザーに表示することです。

4

2 に答える 2

4

infologDataは、次のようにInfologで復元できます。

    infolog.import(infologData);

例えば:

static void Job12(Args _args)
{
    InfologData infologData;

    void saveInfolog()
    {
        ;
        // here we report something
        error("something awful");
        error("something terrible");
        setprefix("scary");
        warning("mouse");

        // here we get infolog data
        infologData = infolog.infologData();

        infolog.clear(0);
    }

    void restoreInfolog()
    {
        ;
        // here we view infolog once again
        infolog.import(infologData);
    }
    ;

    saveInfolog();
    restoreInfolog();
}

プレフィックスの問題を回避するために、saveInfologをrestoreInfologから分離しました。

PS私は単純な理由でview()よりもimport()を好みます:saveInfolog()とrestoreInfolog()の間に追加のinfo / warning / errorを表示すると、出力は完全に異なります-import()はほとんどの場合より適切ですシナリオ。

于 2011-02-20T00:48:02.287 に答える
2

簡単な解決策: 返された値をオブジェクト フィールドに格納します。オブジェクト フィールドをトランザクション テーブルに格納しないでください。レコードを取得するには、オブジェクト/メモ フィールドごとに 1 つの余分なディスク操作が必要になるためです。

後で情報ログに値を表示できます。

infolog.view(x.InfoLogData);

コンテナーを文字列に変換できます。

info(Info::infoCon2str(x.InfoLogData));
于 2011-02-18T08:23:18.407 に答える