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

Logging Java Discussion :

Problème entre Logback et ActiveMQ


Sujet :

Logging Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut Problème entre Logback et ActiveMQ
    Bonjour,

    Je viens de faire une API d'abstraction au-dessus de Logback, de façon à ajouter des fonctions spécifiques à mon besoin.
    Cette API surcharge toutes les fonctions Logback et rajoute quelques fonctions (avec signature spécifiques) pour, par exemple, envoyer certains logs sur du JMS... (le but est que pour un utilisateur tout soit transparent)

    J'ai alors un fichier de configuration logback.xml défini avec les appender a créer... (rien de spécial)

    J'utilise ActiveMQ pour le MOM JMS.

    Mon problème est que quand je lance mon fichier de test, tous les logs d'ActiveMQ ne s'affichent pas et j'ai un warn :
    SLF4J: The following loggers will not work becasue they were created
    SLF4J: during the default configuration phase of the underlying logging system.
    SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
    SLF4J: org.apache.activemq.ActiveMQPrefetchPolicy
    SLF4J: org.apache.activemq.jndi.ReadOnlyContext
    SLF4J: org.apache.activemq.transport.tcp.TcpTransportFactory
    SLF4J: org.apache.activemq.util.ServiceSupport
    ...
    Mon API marche très bien.
    Par contre, j'ai bien lu la page mais il donnent pas de solution concrète (c'est faisable oui ? comment ? etc etc) et j'ai beau chercher mais sans résultat...

    Ma question est, est-ce qu'en mettant un fichier de conf logback.xml je crée un problème au autre application qui utilise un logger ? (api...)

    Merci pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Par défaut abstraction logger
    Je n'ai pas la solution à ton problème, et même si je suis sur qu'il n'est pas bon d'entendre que son travail n'est pas la solution, je m'y risque.

    Je comprends tout à fait ce que tu veux faire (je crois du moins) et me permet de te proposer autre chose car j'ai voulu faire quelque chose de similaire fut un temps. Certes ce n’était pas avec logback/slf4j mais log4j à l'époque et pas pour JMS, mais l'idée de changer le comportement du logger était là.

    Il y a deux aspect,
    tu veux peut être par exemple rajouter des informations aux loggers. le MDC est fait pour ça, tu peux par exemple rajouter le user, ou toute autres informations propre au thread en cours (c'est magique), pour cela un simple ServletFilter dans un contexte WEB, et un Interceptor dans un context EJB. te permettrons de définir les variables MDC pour chaque nouveau contexte.

    Si cela ne te suffit pas, tu peux encore écrire ton propre logger via une Factory. Mais cela me semble un peu complexe de faire mieux que ce qui existe.

    Enfin l'autre aspect, si je comprends bien ton but, tu veux envoyer tes logs sur un providers JMS. logback ne te propose pas il me semble d'appender pour JMS, mais te propose d’écrire ton propre appender. c'est celui ci qui dois générer le message JMS. et non le logger lui même.

    Voilà j’espère t'avoir aidé dans ta problématique sinon tant pis j'aurais tapé tout ça pour rien....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    Bonjour,

    Merci pour la réponse mais c'etait pas mon but,

    Ce que je souhaite c'est fournir a un développeur un api qui regroupe toutes les fonctionnalité (extends Logger) de logback et y rajoute certaine fonctions : par exemple toutes les fonction de base (warn, info...) seront mis dans des fichiers et mes fonction de trace (TracerX, tracerY...) seront par defaut envoyé vers un MOM.

    Logback fourni un Appender JMS.

    Je créer mes appenders (fichiers, JMS...) dans mon logback.xml et je le met dans mon classpath jusqu'au la tout va bien.

    Dans une application qui import mon api toutes mes trace()... on un comportement normal et j'ai ce que je veux en terme de fonctionnement : (fichier, rotation, JMS) mais les les log des autre framework utiliser sont ignoré rien n'est logger

    j'ai le message plus haut avec un lien sur la solution () mais j'ai rien compris de ce qui est expliquer.

    Merci pour l'aide

  4. #4
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Par défaut
    plutôt que de faire une classe héritant du Logger logback qui est d'ailleurs final... ou de faire une classe embarquant le logger avec le pattern decorator, pourquoi ne pas utiliser les Markers de logback, indiquant que ces log sont à destination de JMS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Marker marker = new Marker("JMS");
    logger.debug(marker, "mon message pour JMS");
    Ou encore de créer un logger spécifique à JMS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Logger logger = LoggerFactory.getLogger("JMS");
    d'autant que logback te permet malgré tout d’accéder à la classe ou le log à été générer.

    Qu'en penses tu ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    J'ai changé l'architecture de mon API, à la place de passé par un fichier de conf je passe par du Java et le problème est résolu dans mon cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème entre IE et Mozilla firefox
    Par bilb0t dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2005, 17h07
  2. Problème entre Delphi7 et Crystal Report 9
    Par claude dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/11/2004, 16h42
  3. Problème entre IB 6.0 et Access 2000
    Par Polux63 dans le forum InterBase
    Réponses: 3
    Dernier message: 19/04/2004, 10h34
  4. Problème entre Dev-c++ et Borland c++ compiler 5.5
    Par Argonz dans le forum Dev-C++
    Réponses: 6
    Dernier message: 21/10/2003, 16h21
  5. [ODBC] Problème entre access et ODBC
    Par StephCal dans le forum Access
    Réponses: 4
    Dernier message: 09/07/2003, 16h47

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