Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法将splitterChannel与poco的高级xml配置一起使用_C++_Xml_Logging_Configuration Files_Poco Libraries - Fatal编程技术网

C++ 无法将splitterChannel与poco的高级xml配置一起使用

C++ 无法将splitterChannel与poco的高级xml配置一起使用,c++,xml,logging,configuration-files,poco-libraries,C++,Xml,Logging,Configuration Files,Poco Libraries,我想使用poco及其配置文件配置Advanced logger。 我创建一个config.xml文件,如下所示: <?xml version="1.0" ?> <Application> <logging> <channels> <c1> <class>ColorConsoleChannel</class>

我想使用poco及其配置文件配置Advanced logger。 我创建一个config.xml文件,如下所示:

<?xml version="1.0" ?>
<Application>
    <logging>
        <channels>
            <c1>
                <class>ColorConsoleChannel</class>
                <formatter>
                    <class>PatternFormatter</class>
                    <pattern>%Y-%m-%d %H:%M:%S : %s : [%p] : %t</pattern>
                </formatter>
                <traceColor>lightBlue</traceColor>
                <debugColor>blue</debugColor>
                <informationColor>green</informationColor>
                <noticeColor>green</noticeColor>
                <warningColor>yellow</warningColor>
                <errorColor>red</errorColor>
                <criticalColor>lightMagenta</criticalColor>
                <fatalColor>lightMagenta</fatalColor>       
            </c1>
            <c2>
                <class>FileChannel</class>
                <path>logs/traceApplication.log</path>
                <rotation>1 M</rotation>
                <archive>number</archive>
                <purgeCount>5</purgeCount>
                <formatter>
                    <class>PatternFormatter</class>
                    <pattern>%Y-%m-%d %H:%M:%S : %T : [%p] : %t</pattern>

                </formatter>
            </c2>
        </channels>
        <loggers>
            <consoleLogger>
                <channel>c1</channel>
                <level>information</level>
            </consoleLogger>
            <traceFileLogger>
                <channel>c2</channel>
                <level>trace</level>
            </traceFileLogger>
        </loggers>
        <channels>
            <cSplitter>
                <class>SplitterChannel</class>
                <channels>consoleLogger,traceFileLogger,mainFileLogger</channels>
            </cSplitter>
        </channels>
        <loggers>
            <root>
                <channel>cSplitter</channel>
                <level>trace</level>
            </root>
        </loggers>
    </logging>
</Application>
在添加splitterChannel之前,我的日志记录工作得很好,但是使用它,它就不再工作了

我收到了错误消息:

未找到:日志记录通道:控制台记录器

我的目标是只有一个根记录器,当我使用它时,它将信息级别的日志记录到控制台中,并将跟踪级别的日志记录到文件中

当我在channels.csplit.channels中设置频道时,它可以工作,但所有频道都记录到同一级别。如果我观看日志配置幻灯片(),它们在logging.channels.splitter.channels属性区域中使用记录器而不是通道。所以我认为这是可能的。更多关于Logger类的信息也从Channel继承


有人已经做过这种工作或有了想法?

我终于找到了解决办法。 如果有人感兴趣,我会把它贴在这里

这个文件很好用

<?xml version="1.0" ?>
<Application>
    <logging>
        <channels>
            <cScreen>
                <class>ColorConsoleChannel</class>
                <formatter>
                    <class>PatternFormatter</class>
                    <pattern>%H:%M:%S : %T : [%p] : %t</pattern>
                </formatter>
                <traceColor>lightBlue</traceColor>
                <debugColor>blue</debugColor>
                <informationColor>white</informationColor>
                <noticeColor>green</noticeColor>
                <warningColor>yellow</warningColor>
                <errorColor>red</errorColor>
                <criticalColor>lightMagenta</criticalColor>
                <fatalColor>lightMagenta</fatalColor>       
            </cScreen>
            <cFile>
                <class>FileChannel</class>
                <path>logs/application.log</path>
                <rotation>1 M</rotation>
                <archive>number</archive>
                <purgeCount>5</purgeCount>
                <formatter>
                    <class>PatternFormatter</class>
                    <pattern>%H:%M:%S : %T : [%p] : %t</pattern>
                </formatter>
            </cFile>
        </channels>
        <loggers>
            <root>
                <name></name>
                <channel>cFile</channel>
                <level>trace</level>
            </root>
            <main>
                <name>main</name>
                <channel>cScreen</channel>
                <level>trace</level>
            </main>
        </loggers>
    </logging>
要仅登录到文件,请执行以下操作:

Poco::Logger::get("").trace(msg);
Poco::Logger::get("main").trace(msg);
Poco::Logger::get("").trace(msg);