Poco Get Logger Channel от SplitterChannel - PullRequest
0 голосов
/ 09 июля 2019

В моем приложении я загружаю конфигурацию для регистратора из файла конфигурации XML. Это отлично работает. Для моего Logger я настроен на каналы. Один, который входит в файл, а другой - в консоль.

С logger.getChannel() я могу получить SplitterChannel. Но мне нужен доступ к содержащим каналам. Но я не нашел способ получить 2 канала из SplitterChannel

Это код для загрузки конфигурации регистрации:

if (Poco::File{ configPath }.exists()) {
    try {
        Poco::AutoPtr<Poco::Util::AbstractConfiguration> loggingConfig{ new Poco::Util::XMLConfiguration{configPath.toString()} };
        Poco::Util::LoggingConfigurator logConf;
        logConf.configure(loggingConfig);
        auto logFilePath = loggingConfig->getString("logging.channels.c1.path");

        Poco::File logFile{ Poco::Path{logFilePath}.parent() };
        if (!logFile.path().empty() && !logFile.exists()) {
            logFile.createDirectories();
        }
        Poco::AutoPtr<Poco::Util::AbstractConfiguration> linesyncView{ loggingConfig->createView("LineSync") };
        displayThreadNames = linesyncView->getBool("displayThreadNames", false);
    } catch (const Poco::Exception&) {
        poco_error(logger, "Could not load Config File");
    }
}

И это конфигурация ведения журнала:

<config>
<logging>
    <channels>
        <c1>
            <class>FileChannel</class>
            <path>C:\Log\log.log</path>
            <rotation>100 M</rotation>
            <archive>timestamp</archive>
            <compress>true</compress>
            <formatter>
                <class>PatternFormatter</class>
                <pattern>%L%d-%m-%Y;%H:%M:%S;%s(%U [%u] );[%p %I];%t</pattern>
            </formatter>
        </c1>
        <c2>
            <class>ColorConsoleChannel</class>
            <pattern>%s(%U [%u]): [%p %I] %t</pattern>
        </c2>
        <splitter>
            <class>SplitterChannel</class>
            <channels>c1,c2</channels>
        </splitter>
    </channels>
    <loggers>
        <root>
            <channel>splitter</channel>
            <level>information</level>
        </root>
    </loggers>
</logging>
</config>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...