AutoPtr<SplitterChannel> splitterChannel(new SplitterChannel());

        AutoPtr<Channel> consoleChannel(new ConsoleChannel());
        AutoPtr<Channel> fileChannel(new FileChannel("Arcanite.log"));
        AutoPtr<FileChannel> rotatedFileChannel(new FileChannel("Arcanite_R.log"));

        rotatedFileChannel->setProperty("rotation", "100");
        rotatedFileChannel->setProperty("archive", "timestamp");

        splitterChannel->addChannel(consoleChannel);
        splitterChannel->addChannel(fileChannel);
        splitterChannel->addChannel(rotatedFileChannel);

        //"%d-%m-%Y %H:%M:%S: %t"
        AutoPtr<Formatter> formatter(new PatternFormatter("%d-%m-%Y %H:%M:%S %s: %t"));
        AutoPtr<Channel> formattingChannel(new FormattingChannel(formatter, splitterChannel));


        Logger& sLog = Logger::create("LogChan", formattingChannel, Message::PRIO_TRACE);

我已经在多个类中编写了我想用于服务器的记录器。我该如何适应这一点?这可能是基本的C++,但我似乎错过了几节课:P

最佳答案

Poco::Logger类用作日志记录框架。

使用固定名称(示例中为“LogChan”)定义记录器实例时,所有类都可以访问它。所以你应该做一个

Logger& logger = Logger::get("logChan");

从其他类(class)中获取记录器引用。

我猜下面它使用单例模式来生成记录器池。

10-06 14:29