ofLogger::ofLogger() { // code from Poco LogRotation sample Poco::AutoPtr<Poco::SplitterChannel> splitterChannel(new Poco::SplitterChannel()); Poco::AutoPtr<Poco::Channel> consoleChannel(new Poco::ConsoleChannel()); Poco::AutoPtr<Poco::Channel> fileChannel(new Poco::FileChannel("sample.log")); Poco::AutoPtr<Poco::FileChannel> rotatedFileChannel(new Poco::FileChannel("rotated.log")); rotatedFileChannel->setProperty("rotation", "100"); rotatedFileChannel->setProperty("archive", "timestamp"); splitterChannel->addChannel(consoleChannel); splitterChannel->addChannel(fileChannel); splitterChannel->addChannel(rotatedFileChannel); Poco::AutoPtr<Poco::Formatter> formatter(new Poco::PatternFormatter("%t")); Poco::AutoPtr<Poco::Channel> formattingChannel(new Poco::FormattingChannel(formatter, splitterChannel)); logger = &Poco::Logger::create("Logger", formattingChannel, Poco::Message::PRIO_TRACE); }
//---------------------------------------- // PrepareConsoleLoggerWithRotatedLogFile //---------------------------------------- void PrepareConsoleLoggerWithRotatedLogFile( const std::string& name , const Poco::Util::MapConfiguration* config , int level=Poco::Message::PRIO_INFORMATION) { Poco::AutoPtr<Poco::SplitterChannel> splitterChannel(new Poco::SplitterChannel); Poco::AutoPtr<Poco::Channel> consoleChannel(new Poco::ConsoleChannel); Poco::AutoPtr<Poco::FileChannel> rotatedFileChannel(new Poco::FileChannel); for(std::size_t i=0; i<kNumKeyDefaultValue; ++i) { rotatedFileChannel->setProperty(kKeyDefaultValue[i][0] , config->getString(kKeyDefaultValue[i][0], kKeyDefaultValue[i][1])); } splitterChannel->addChannel(consoleChannel); splitterChannel->addChannel(rotatedFileChannel); Poco::AutoPtr<Poco::Formatter> formatter(new Poco::PatternFormatter("%w %b %e %H:%M:%S.%i %Y: %t")); formatter->setProperty("times", "local"); Poco::AutoPtr<Poco::Channel> formattingChannel(new Poco::FormattingChannel(formatter, splitterChannel)); Poco::Logger::create(name, formattingChannel, level); }
SDCLibrary2::SDCLibrary2() : WithLogger(OSELib::Log::BASE), initialized(false) { // set up the librarie's logger Poco::AutoPtr<Poco::ConsoleChannel> consoleChannel(new Poco::ConsoleChannel); Poco::AutoPtr<Poco::SimpleFileChannel> fileChannel(new Poco::SimpleFileChannel); Poco::AutoPtr<Poco::SplitterChannel> splitterChannel(new Poco::SplitterChannel); fileChannel->setProperty("path", "sdclib.log"); fileChannel->setProperty("rotation", "10 M"); splitterChannel->addChannel(consoleChannel); splitterChannel->addChannel(fileChannel); Poco::AutoPtr<Poco::PatternFormatter> patternFormatter(new Poco::PatternFormatter); patternFormatter->setProperty("pattern", "%q %H:%M:%S.%i %s:\n %t"); Poco::AutoPtr<Poco::FormattingChannel> formattingChannel(new Poco::FormattingChannel(patternFormatter, splitterChannel)); getLogger().setChannel(formattingChannel); // default ports chosen regarding to unlikely used ports: // https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers }