Question

Je voudrais configurer un enregistreur avancé à l'aide de POCO et de son fichier de configuration. Je crée un fichier config.xml comme celui-là:

<?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>

J'utilise un poco :: util :: classe de serveur et dans la méthode d'initialisation que j'ai mis:

void CBS2AudioVideo::initialize(Poco::Util::Application& self)
{
    loadConfiguration("config.xml");
    Poco::Util::ServerApplication::initialize(self);
}

Avant d'ajouter le SplitterChannel, ma journalisation fonctionne bien mais avec elle, ce n'est plus.

J'ai eu le message d'erreur:

non trouvé: Channel de journalisation: ConsolElogger

Mon objectif est d'avoir un seul enregistreur racine et lorsque je l'utilise, il se connecte au niveau de l'information dans la console et dans le niveau de trace dans le fichier.

Lorsque je définit des chaînes dans des canaux .Csplitter.channel, cela fonctionne, mais tous les canaux sont connectés au même niveau. Et si je prends la glissière de configuration de journalisation ( http://pocoproject.org/slides/185-loggingconfiguration. PDF ) Ils utilisent des enregistreurs et non des canaux dans la zone Logging.Channel.Splitter.Channel Attribut Attribut. Donc, je pense que c'est possible. Plus sur la classe de l'enregistreur hériter de la chaîne aussi.

Quelqu'un a déjà fait ce genre de travail ou j'ai une idée?

Était-ce utile?

La solution

J'ai enfin trouvé la solution. Je poste ici s'il intéresse quelqu'un.

Ce fichier fonctionne bien.

<?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>

Pour vous connecter à l'écran et dans le fichier, make:

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

Pour vous connecter uniquement à Fichier faire

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top