2

是否可以从 InfologData 恢复 infolog?考虑代码

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
}       

我应该写什么而不是从 infologData 将“可怕的// SOME CODE事情”、“可怕的事情”、“可怕的鼠标”恢复到 infolog?

我的目标是执行一些操作,将信息日志存储在数据库中,然后在用户需要时将其显示给用户。

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 我更喜欢 import() 而不是 view(),原因很简单:如果你在 saveInfolog() 和 restoreInfolog() 之间显示额外的信息/警告/错误,输出将完全不同 - import() 在大多数情况下更合适情景。

于 2011-02-20T00:48:02.287 回答
2

简单的解决方案:将返回值存储在容器字段中。请记住,不要将容器字段存储在事务表中,因为每个容器/备忘录字段需要一个额外的磁盘操作来检索记录。

您可以稍后在信息日志中显示该值:

infolog.view(x.InfoLogData);

您可以将容器转换为字符串:

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