代码之家  ›  专栏  ›  技术社区  ›  Sunny Milenov

C++简单条件日志

  •  3
  • Sunny Milenov  · 技术社区  · 14 年前

    免责声明:我不是C++开发者,我只能做基本的事情。(我理解指针,只是我的知识太生疏了,我已经20年没有接触C/C++了)

    设置:我有一个outlook加载项,用c/.net 1.1编写。它使用了 c++ shim 加载。

    通常,这工作得很好,我在我的c代码nlog中使用它来记录日志。但是,有时加载项加载失败,i.t.它根本没有命中托管代码,因此我无法从日志文件中调查问题。

    所以,我需要把一些基本日志记录到C++ SIMM中,只需在文件中写入即可。我需要使它尽可能简单,以便我们的用户启用。事实上,我不想默认发货。

    我在想一件事,它将检查是否有一个特定的dll(日志dll),如果有,使用它。否则,它不会记录任何东西。这样,当我有一个用户遇到这样的问题时,我可以只向他发送日志dll,用户将其保存在运行时目录中,我将拥有该文件。

    我想这必须通过某种形式的工厂解决方案来完成,它要么返回一个虚拟记录器,要么如果找到了dll,返回一个真实的记录器。

    另一个选择是制作一些简单的记录器,并根据指令使用或不使用它重新构建填充程序。这不是理想的方法,因为填充程序需要签名,我必须指示用户制作一个“真实”的备份副本,然后在完成后还原,等等,而不是仅仅保存和删除一个dll。

    我会很感激任何好的建议,如何处理它,连同链接或样本代码后如何去。

    干杯

    2 回复  |  直到 14 年前
        1
  •  2
  •   rerun    14 年前

    加载日志dll的接缝就像处理配置问题的复杂方法。为什么不使用注册表。如果在dll上使用条件加载,则将使用 LoadLibrary GetProceAddress 正如你所说的,你并不是一个真正的C++程序员,那么为什么要引入复杂性呢?此外,必须有N+1 C++日志库,你可以查看其中的任何一个。


    一些是我在谷歌搜索后发现的

        2
  •  1
  •   sharptooth    14 年前

    为什么不给它一个注册表项呢?用户打开regedit,添加一个键,然后库开始记录。日志代码将一直存在,只是在缺少键或设置为“no logging”时不调用。