8
votes

Comment configurer l'exploitation forestière Openejb?

Comment puis-je configurer le format de journalisation Openejb? C'est ce que ce que je vois maintenant dans les journaux: xxx

Je souhaite désactiver info messages et modifier la mise en forme des autres. Modifications de log4j.properties n'ont aucun effet.


0 commentaires

4 Réponses :


2
votes

Selon Configuration de la journalisation dans les tests , vous pouvez remplacer La configuration de journalisation par défaut:

  • en mettant des propriétés spécifiques à initialContext Temps de création ~ ou ~
  • en fournissant un intégré.logging.properties sur la classe de classe

    C'est l'approche recommandée.

    Au fur et à mesure de la variante, vous pouvez désactiver l'ensemble de la configuration par défaut et fournir votre propre:

    Vous pouvez définir "openejb.logger.external" à "true" comme une propriété système (ne fonctionnera pas comme une propriété initialeContext). Ensuite, OpeneJB ne tentera pas de configurer la journalisation du tout et vous pouvez configurer la journalisation avec Log4J directement en utilisant l'une de ses API; xml, propriétés ou code.


6 commentaires

Aucune des approches ne fonctionne :( où je peux "définir exactement openejb.logger.external to true"? Dans quel fichier? J'utilise jndi.properties . Aucun effet :(


@Vincenzo: Hmm, en effet, je ne peux pas faire fonctionner les choses comme prévu. Peut-être que j'ai mal compris quelque chose. Devra creuser un peu ça.


@Pascal, vous me ferez une grande faveur, car je creuse depuis 3 semaines. Pas de chance :(


@Vincenzo C'est l'une de ces situations difficiles. Ne fonctionne pas »est difficile à soutenir. Il y a tellement de façons de peaufiner le chat, si par hasard vous les essayez tous à la fois, rien ne fonctionnera. Pouvez-vous essayer l'approche d'initialeContext de remplacement (non via le fichier Jndi.Properties) et mettez à jour la question pour afficher votre sortie de configuration et de journal?


@David initialContext-approche d'outre-poste fonctionne bien, sauf une chose. OpeneJB détruit la configuration précédente de Log4J, le remplace de sa propre configuration. Je crois comprendre que je devrais dire à l'openejb d'utiliser la configuration de journalisation externe, mais comment puis-je le faire de Maven?


@Vincenzo Gardez à l'esprit que les capacités primordiales que vous obtenez avec l'enregistreur Openejb fonctionne avec les propriétés du système ainsi que les propriétés initialesContext. Si le désir est d'obtenir la configuration de journalisation hors du test, il existe de nombreuses façons de le faire. Si vous mettez à jour votre question pour afficher votre code primordial basé sur l'initialContext, je peux poster une réponse avec une approche mavenne équivalente.



3
votes

C'est ce que j'ai fait pour que les choses fonctionnent correctement (dans pom.xml code>): xxx pré>

fonctionne bien maintenant. Ceci est mon test / ressources / jndi.properties code>: p> xxx pré>

ceci est test / ressources / log4j.properties code>: P>

log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = [%-5p] %c: %m\n
# OpenEJB levels
log4j.logger.OpenEJB=INFO
log4j.logger.OpenEJB.options=INFO
log4j.logger.OpenEJB.server=INFO
log4j.logger.OpenEJB.startup=INFO
log4j.logger.OpenEJB.startup.service=INFO
log4j.logger.OpenEJB.startup.config=INFO
log4j.logger.OpenEJB.hsql=INFO
log4j.logger.CORBA-Adapter=INFO
log4j.logger.Transaction=INFO
log4j.logger.org.apache.activemq=INFO
log4j.logger.org.apache.geronimo=INFO
# OpenJPA logging levels
log4j.logger.openjpa.Tool=WARN
log4j.logger.openjpa.Runtime=WARN
log4j.logger.openjpa.Remote=WARN
log4j.logger.openjpa.DataCache=WARN
log4j.logger.openjpa.MetaData=WARN
log4j.logger.openjpa.Enhance=WARN
log4j.logger.openjpa.Query=WARN
log4j.logger.openjpa.jdbc.SQL=WARN
log4j.logger.openjpa.jdbc.SQLDiag=WARN
log4j.logger.openjpa.jdbc.JDBC=WARN
log4j.logger.openjpa.jdbc.Schema=WARN


4 commentaires

Si vous pouvez mettre à jour la réponse avec le contenu log4j.properties, ce serait fantastique. Note de prudence à tous les futurs lecteurs qui utilisent «openejb.logger.external» sans remplacer activement la configuration Log4J n'entraîneront aucun enregistrement.


@David j'ai mis à jour la réponse. Maintenant, je suis absolument heureux de l'openejb car je peux contrôler son comportement et comprendre ce qui se passe. Je ne sais vraiment pas pourquoi l'openje documentation officielle n'a pas d'exemple simple simple sur la façon de l'utiliser avec Maven pour les tests unitaires. Peut-être que c'est bon d'écrire un?


Le "pourquoi" est assez simple - il n'y a pas de budget :) C'est un projet de volontariat. Nous obtenons ce que nous obtenons. Plus qu'heureux de vous préparer avec l'accès Wiki si vous voulez commencer à contribuer. Il suffit de prendre une note sur la liste dev@openejb.apache.org et nous pouvons le prendre à partir de là.


Merci pour l'indice de définir Openejb.nobanner = False. - Ces messages de bannière polluent la production de Cuke4Duke lors de la diffusion de scénarios.



8
votes

Gardez à l'esprit que les capacités primordiales que vous obtenez avec l'openejb Logger fonctionnent avec les propriétés du système ainsi que les propriétés initialesContext.

the openejb.logger.external code> est vraiment destiné aux serveurs intégrant Openejb , tels que Geronimo, qui utilisent différents systèmes de journalisation et nécessitent un contrôle avancé sur la journalisation. Il n'est pas conçu pour une utilisation courante comme avec cette option activée et aucune autre étape prise, vous obtenez aucune journalisation forte> de quelque nature que ce soit, pas même une erreur et aucune information sur les déploiements échoués. Même l'utilisation correcte désactivera toujours toutes les options décrites ci-dessous. P>

Si le désir est d'obtenir la configuration de journalisation dans ou hors du test, il existe de nombreuses façons de le faire sans perdre de fonctionnalité de journalisation Openejb fournit. P>

Option 1: Dans le code via InitialContext Propriétés H2>

Dans le cas de test lui-même via InitialContext Propriétés P>

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <systemPropertyVariables>
      <log4j.rootLogger>fatal,C</log4j.rootLogger>
      <log4j.category.OpenEJB>warn</log4j.category.OpenEJB>
      <log4j.category.OpenEJB.options>warn</log4j.category.OpenEJB.options>
      <log4j.category.OpenEJB.server>warn</log4j.category.OpenEJB.server>
      <log4j.category.OpenEJB.startup>warn</log4j.category.OpenEJB.startup>
      <log4j.category.OpenEJB.startup.service>warn</log4j.category.OpenEJB.startup.service>
      <log4j.category.OpenEJB.startup.config>warn</log4j.category.OpenEJB.startup.config>
      <log4j.category.OpenEJB.hsql>warn</log4j.category.OpenEJB.hsql>
      <log4j.category.CORBA-Adapter>warn</log4j.category.CORBA-Adapter>
      <log4j.category.Transaction>warn</log4j.category.Transaction>
      <log4j.category.org.apache.activemq>error</log4j.category.org.apache.activemq>
      <log4j.category.org.apache.geronimo>error</log4j.category.org.apache.geronimo>
      <log4j.category.openjpa>warn</log4j.category.openjpa>
      <log4j.appender.C>org.apache.log4j.ConsoleAppender</log4j.appender.C>
      <log4j.appender.C.layout>org.apache.log4j.SimpleLayout</log4j.appender.C.layout>
      <openejb.nobanner>false</openejb.nobanner>
    </systemPropertyVariables>
  </configuration>
</plugin>


2 commentaires

Hm ... J'apprécie vos commentaires, mais aucun d'entre eux ne fonctionne :( Configuration de la journalisation dans jdni.properties est ignorée. Et fournissant la configuration de la connexion dans pom.xml est un Anti-motif, comme pour moi. Quoi qu'il en soit, j'ai trouvé une solution (voir ma réponse), qui est soignée et facile.


@Vincenzo La seule chose que je puisse imaginer que cela empêcherait l'approche JNDI.Properties du travail, c'est que le fichier n'est pas dans la classe de classe à la place attendue. Comme mentionné sa JVM qui lit ce fichier et maintient un objet Java.Util.Properties avec les propriétés initialesContext des propriétés superposées. Donc, tout ce qui fonctionne via les propriétés initialesContext fonctionnera également via jndi.properties. J'ai fait une courte vidéo pour vous et mis à jour la réponse avec un lien dans l'espoir qui pourrait réparer le "ne fonctionne pas" :)



0
votes

Si cela ne vous dérange pas d'utiliser un autre cadre de journalisation, ces liens peuvent être utiles.

http: //hwellmann.blogspot .FI / 2012/11 / Logging-with-slf4j-and-logback-in.html

JUL à SLF4J Bridge

n'utilise pas openjb.logger.external = true avec cette approche. Voir http://grepcode.com/file/repo1.maven.org/maven2/org.apache.openejb/openejb-core/3.0/org/apache/openejb/util/julilogstreamfactory.java


0 commentaires