0

I have the following statements:

static Logging::Logger* common_logger = new Logging::Logger(Logging::Logger::LEVEL);

In the Logger.h i have

  class Logger {
public:

    enum LEVEL {
        Debug,
        Warning,
        Notification,
        Error
    };
  }

I have included the file Logger.h inside my another class as :

    Logging::log(CustomDialog::logger, Logging::Entry, CustomDialog::CLASSNAME, "CustomDialog");

I need to know if this is the right way to do the reason why i am doing this is to get logs based upon the level.

Regards,

4

2 回答 2

4

看一下Log4cxx - 它易于使用,并且几乎包含您在 C++ 日志框架中可能需要的所有功能。它是可扩展的,可以通过配置文件进行配置,甚至支持开箱即用的远程登录。

于 2012-09-13T12:34:59.097 回答
1

您可以使用 ACE_DEBUG,它看起来很老派(ala printf),但线程安全、可靠且完全可配置(使用日志文件、标准输出等)。当然,您必须链接libACE(自适应通信框架),但它是如今,默认情况下,许多 Linux 发行版中都可以轻松获得开发包。我一直在查看 C++ 日志库帖子中提到的列表Als,但似乎大多数人都遇到了许多框架的内存泄漏,并且 boost::Log 还没有发布。

另一点是大多数日志库使用流,例如:

// from thread 1
mlog(mlog::DEBUG) << "Debug message goes here" << mlog::endl;

// from thread 2
mlog(mlog::INFO) << "Info message goes here" << mlog::endl;

在多线程环境中将无法按预期工作,而 ACE 将在那里正确执行。

上面的输出将如下所示:

[thread1 | 12:04.23] Debug me[thread2 | 12:04.24] Info message goesssage goes herehere
于 2012-09-13T13:04:53.530 回答