IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Boost Log Formatter with channel and severity


Sujet :

Boost C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par d�faut Boost Log Formatter with channel and severity
    Bonjour,

    <JeVousRaconteMaVie : on>
    J'ai pass� la premi�re moiti� de ma journ�e � installer boost log, de fa�on � pouvoir compiler sur ma machine windows avec le MinGW embarqu� dans Code::Blocks.

    Je vous assure que ce n'est pas simple, si �a int�resse quelqu'un j'envoie un tutoriel contre 3 timbres

    Enfin, finalement j'ai r�ussi
    <JeVousRaconteMaVie : off>

    J'ai ensuite pass� la seconde moiti� de ma journ�e � essayer de comprendre comment �a marche et franchement, je trouve que la documentation est TRES mal �crite.

    Enfin, bref voil�, j'abandonne. Si quelqu'un peut m'aider ce serait sympa.
    Voici ce que je voudrais faire :
    1. Je veux mettre des logs dans mon programme sous forme de stream
    2. Ces logs sont sauvegard�s dans un fichier
    3. Je veux choisir et loguer des 'channels', c'est � dire des cat�gories de log : r�seau, thred, synchro, gameplay ...
    4. Je veux choisir et loguer la s�v�rit�
    5. Mon programme �tant multi-thread, je veux loguer le threadID
    6. Mon programme �tant client/serveur, je veux loguer le processId


    Voici � quoi devrait ressembler mon fichier de log � la fin :
    En supposant que :
    • ccc est le pid d'un client
    • sss est le pid d'un server
    • 1111 2222 3333 sont les threadID de diff�rents thread du client et du serveur.
    • il est 14h34, 23 secondes et quelques milli�mes au moment o� ces logs sont g�n�r�s.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ..
    [ccc][1111][14:34:23 112][Network][Info] Tentative de connexion au Seveur
    [sss][2222][14:34:23 237][Network][Info] Connexion entrante
    [sss][2222][14:34:23 248][Network][Info] Création dune session
    [sss][2222][14:34:23 324][Thread][Debug] Nouveau Thread
    [sss][3333][14:34:23 567][Network][Info] Session crée
    [ccc][1111][14:34:23 945][Network][Info] Connexion active
    [sss][3333][14:34:24 112][Network][Warning] Session interrompue
    [ccc][1111][14:34:24 112][Network][Error] Connexion interrompue
    ...
    Voil� ce qui marche :
    D�claration
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Trace
        {
        public :
            enum SeverityLevels {...};    // mes niveaux de sécurité
            enum Channels{...};    // mes channels
            typedef boost::log::sources::severity_channel_logger_mt<
                SeverityLevels,     // the type of the severity level
                Channels            // the type of the channel name
            > MyLogger;    // le type de mes logger
        public :
            static MyLogger m_channel1;    // un loger par channel
            static MyLogger m_channel2;    // un loger par channel
            ...
        public :
            static void init();         // initialisation les logers/sinks...
        };
     
    }
    Impl�mentation :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Trace::init()
    {
        boost::log::add_common_attributes();   // j'ajoute les attributs de base (en l'occurence ProcessId, ThreadId et TimeStamp
        init_log_to_file
        (
            ...
            boost::log::keywords::format = "[%ProcessID%][%ThreadID%][%TimeStamp%][%Channel%][%Severity%]: %_%"
        );
    }
    Et apr�s j'ai fait une macro pour pouvoir l'utiliser comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    TRACE(Network,info) << "Logs enableds" << 4;
    Et voici ce que j'obtiens :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    [000000x2c0][0x246788][2010-Oct-02 23:10:57.156250][][]: Logs enableds
    ...
    [000000x2c0][0x2478f0][2010-Oct-02 23:11:04.265625][][]: Client started
    ...
    [00000x141c][0x247a98][2010-Oct-02 23:11:04.281250][][]: Nouvelle session
    Comme vous l'aurez devin�, mon probl�me est maintenant de faire apparaitre le channel et le niveau de s�v�rit�

    J'ai tent� de modifier le code d'initialisation ci-dessus, comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    boost::shared_ptr< boost::log::sinks::synchronous_sink< boost::log::sinks::basic_text_file_backend< char > > > pBackend;
    pBackend = boost::log::init_log_to_file(...); // je récupère le frontend du sink créé
    pBackend->locked_backend()->set_formatter(boost::log::formatters::stream << boost::log::formatters::attr< Channels >("Channel"));  // j'essaie d'ajouter un formater au backend associé.
    Et quelque part, je d�finis :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    std::ostream& operator<< (std::ostream& strm, Trace::Channels const& val)
    {
    ...
    }
    .

    Le r�sultat que j'obtiens : �a compile, �a linke, �a s'ex�cute sans lancer d'exception, mais mon fichier de logs est irr�m�diablement vide.

    Merci d�j� � ceux qui ont lu ce long post.
    Merci d'autant plus � ceux qui pourront m'aider.

  2. #2
    Membre chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par d�faut
    Ajout : Bon le coup du ProcessId, ce n'est pas forc�ment pertinent, car il n'y a pas de raison que le Server et le client loguent dans le m�me fichier.

    De plus, je n'ai aucune esp�ce de certitude quand au fait que Boost Log sait faire cela.

    Mais cela ne change rien au probl�me

  3. #3
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Ce que tu veux ressemble beaucoup a ce que j'ai fait : WinLog : une biblioth�que de g�n�ration de messages de trace
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par d�faut
    Merci beaucoup pour ta r�ponse.

    H�las, une des contraintes que j'ai est la portabilit� de l'application.

    Par ailleurs, il est difficile de rivaliser avec la notori�t� de boost : m�me si ta librairie est de meilleure qualit�, plus robuste, plus performante, plus facile � installer, � utiliser, � maintenir... au final, il me semble qu'il est plus facile pour un codeur de valoriser sa maitrise de "boost", que celle de WinLog.

    Et sur ce point, je partage ton amertume : c'est pas juste, et les gens sont des cons de pr�f�rer de belles �tiquettes plut�t que de beaux produits. �tant moi-m�me dans l'�dition de logiciel, je comprendrais tr�s bien ta frustration.

  5. #5
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par d�faut
    Gaffe que boost.Log a �t� accept� depuis tr�s peu de temps et n'ai pas int�gr�. D'ou al doc merdique et le support foireux.

    Je t'enjoint de poster sur la ML user de boost.

  6. #6
    Membre chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par d�faut
    Citation Envoy� par Joel F Voir le message
    Gaffe que boost.Log a �t� accept� depuis tr�s peu de temps
    Merci de l'info.

    Citation Envoy� par Joel F Voir le message
    Je t'enjoint de poster sur la ML user de boost.
    Vraiment, j'aimerais, mais j'ai un peu la flemme de d�crire tout ceci en anglais
    Surtout qu'il faudrait ajouter les remarques sur l'installation avec windows/mingw pour faire bien.
    D�j� que j'ai paum� la moiti� de mon week-end � installer ... j'aimerais que mon projet avance un peu.
    Allez promis, je vais essayer de me motiver d'ici la fin de la semaine.

    Citation Envoy� par ram-0000;
    Aucune amertume ni frustation. Je ne gagnerai pas un kopek de plus si tu l'utilises et pas un de moins si tu ne l'utilise pas.
    Et bien, je dois projeter alors. Parce que moi � ta place, �a m'agacerais franchement. Du coup : f�licitations pour ton sto�cisme.

    En tout cas : merci pour vos r�ponses qui sont sympa, m�me si pour le moment (et tant que je me sors pas les doigts du xxx), je n'ai pas de solutions � mon probl�me.

  7. #7
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par Feriaman Voir le message
    Et sur ce point, je partage ton amertume : c'est pas juste, et les gens sont des cons de pr�f�rer de belles �tiquettes plut�t que de beaux produits. �tant moi-m�me dans l'�dition de logiciel, je comprendrais tr�s bien ta frustration.
    Aucune amertume ni frustation. Je ne gagnerai pas un kopek de plus si tu l'utilises et pas un de moins si tu ne l'utilise pas.

    Citation Envoy� par Feriaman Voir le message
    H�las, une des contraintes que j'ai est la portabilit� de l'application.
    La biblioth�que WinLog est livr�e avec ses sources, tu peux les int�grer directement dans ton projet et adieu les probl�mes de portabilit�. J'ose croire que je n'ai pas �cris un code trop pourri.

    Citation Envoy� par Feriaman Voir le message
    Par ailleurs, il est difficile de rivaliser avec la notori�t� de boost
    Tout � fait d'accord et ce n'est pas l'enjeu de cette biblioth�que.
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. R�ponses: 2
    Dernier message: 04/06/2009, 11h31
  2. [C#] Calendar Popup with TextBox and Image?
    Par Nadaa dans le forum ASP.NET
    R�ponses: 15
    Dernier message: 04/02/2009, 11h59
  3. Indy TIdFTP : Please login with USER and PASS.
    Par sinfoni dans le forum Composants VCL
    R�ponses: 3
    Dernier message: 19/03/2008, 08h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo