2010-04-19 3 views
3

Atomikos est assez verbeux lorsqu'il est utilisé. Il semble y avoir beaucoup de messages INFO (la plupart du temps non pertinents pour moi) que le gestionnaire de transactions écrit sur la console. Le paramètre dans le transaction.properties qui est supposé contrôler le niveau de messagerie com.atomikos.icatch.console_log_level ne semble pas avoir d'effet, car même si défini sur WARN (ou ERROR) les messages INFO sont toujours enregistrés. Les paramètres log4j pour com.atomikos et atomikos semblent également être ignorés. Est-ce que quelqu'un parvient à désactiver les journaux INFO sur la console avec Atomikos ?. Comment? MerciComment définir Atomikos de ne pas écrire dans les journaux de la console?

Peter

Répondre

0

J'ai trouvé un moyen de le faire. C'est en fait très simple puisque Atomikos utilise une classe centralisée pour faire la journalisation appelée com.atomikos.icatch.system.Configuration. L'exploitation forestière est en fait réalisée avec des implémentations de com.atomikos.diagnostics.Console donc tout ce que je devais faire est de désenregistrer toutes les consoles par défaut et enregistrer ma propre implémentation qui est basée sur l'exploitation forestière communes

+0

Pouvez-vous préciser à ce sujet, par exemple avec un exemple dans une configuration Spring? –

0

Votre solution pourrait fonctionner, mais la chose plus facile serait de configurer SLF4J/Log4J pour ne pas consigner les commentaires de niveau INFO pour com.atomikos. *

HTH

+1

J'ai déjà essayé ça sans résultat. Jetez un oeil sur leurs sources (ils font un System.out à la console par défaut) –

+0

@peter Ils sont He, Guy est le co-fondateur d'Atomikos :) – Ittai

+2

Juste au cas où quelqu'un s'arrête et ne comprend pas pourquoi le La solution ci-dessus ne fonctionne pas - C'est parce que ce n'est pas com.atomikos. * MAIS juste "atomikos" (sans les guillemets bien sûr) Ceci est vrai pour Atomikos 3.70 – Ittai

0

J'ai eu des problèmes similaires et a réussi à les résoudre comme décrit dans ces messages sur le forum Atomikos (1), voici un résumé de la solution:

Dans mon classpath je:
slf4j-api-1.6.4.jar
slf4j-log4j12-1.6.4.jar
log4j-1.2.16.jar
et je n'ai pas d'autres slf4j * pot fichiers dans le classpath (ceci est important).

Dans mon fichier log4j.xml J'ai ajouté:

<logger name="com.atomikos"> 
    <level value="error" /> 
</logger> 

S'il vous plaît notez que je « com.atomikos » et non « atomikos » (comme celui-ci ne fonctionne pas pour moi). Et maintenant l'autre importante astuce qui a fait tout le travail de chose: assurez-vous que la propriété: com.atomikos.icatch.output_dir

est supprimé/commenté dans jta.properties (ou transactions.properties)

J'espère que ça aide.

(1): http://fogbugz.atomikos.com/default.asp?community.6.2809.2

+1

Les réponses qui ne contiennent que des liens sont [considérées comme une mauvaise pratique] (http://meta.stackexchange.com/questions/ 8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Veuillez résumer le contenu ici (ne pas copier/coller) afin que la réponse puisse se suffire à elle-même. Si vous ne le faites pas, vous courez le risque que votre réponse soit supprimée, surtout si le lien meurt jamais. –

1

J'utilise Atomikos 3.8 pour les tests et essayé toutes les solutions présentées ici (4 Juillet 2012) et aucune n'a fonctionné. J'ai donc créé la classe MockAtomikosLogger suivante et j'ai appelé la méthode configure dans ma configuration de test.

test fragment de code d'installation:

MockAtomikosLogger.configure(); 

L'enregistreur maquette suit:

package com.atomikos.logging; 

import com.atomikos.logging.Logger; 

public class MockAtomikosLogger implements Logger { 

    org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(getClass()); 

    public static void configure() { 
     com.atomikos.logging.LoggerFactory.setLoggerFactoryDelegate(
       new LoggerFactoryDelegate() { 

        @Override 
        public Logger createLogger(Class<?> clazz) { 
         return new MockAtomikosLogger(); 
        } 
       }); 
    }//end configure 

    @Override 
    public void logWarning(String message) { 
     logger.warn(message); 
    } 

    @Override 
    public void logInfo(String message) { 
    } 

    @Override 
    public void logDebug(String message) { 
    } 

    @Override 
    public void logWarning(String message, Throwable error) { 
     logger.warn(message, error); 
    } 

    @Override 
    public void logInfo(String message, Throwable error) { 
    } 

    @Override 
    public void logDebug(String message, Throwable error) { 
    } 

    @Override 
    public boolean isDebugEnabled() { 
     return false; 
    } 

    @Override 
    public boolean isInfoEnabled() { 
     return false; 
    } 
} 
Questions connexes