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");
из других ваших классов, чтобы получить ссылку на регистратор.
Я предполагаю, что ниже он использует шаблон синглтона для генерации пула регистраторов.
Других решений пока нет …