0

我用 C++ 编写了一个 python 模块。一切正常,但现在我想添加日志记录。我的记录器类(第 3 方)需要类似于以下内容的初始化:

int main()
{
    Logger logger("log.log");
    Logger::Register(&logger);

    DoSomethingAndLog();
    return 0;
}

如您所见logger,在程序初始化时创建并在程序终止时销毁。

我将在哪里创建Logger对象,以便在模块加载时构建它并在模块卸载时销毁?

4

1 回答 1

0

您可以将对象包装Logger到一个类中并声明该类的全局实例。这种方法比原始全局变量有一点优势,Logger因为您可以在构造函数和析构函数中控制初始化和取消初始化。您还可以限制对Logger对象的访问。

class TheLogger
{
public:
  TheLogger() { Logger::Register(&_logger); }
  ~TheLogger() { Logger::Unregister(&_logger); }

  Logger& GetLogger() { return _logger; }

private:
  Logger _logger;
};

TheLogger theLogger;

int main()
{
  DoSomethingAndLog();

  theLogger.GetLogger().Log("...");

  return 0;
}
于 2012-08-19T16:24:40.457 回答