8

OpenEJB ロギング形式を構成するにはどうすればよいですか? これは、ログに表示されるものです。

[...]
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec
Running com.XXX.FooTest
Apache OpenEJB 3.1.3    build: 20101015-05:42
http://openejb.apache.org/
INFO - openejb.home = /code/XXX
INFO - openejb.base = /code/XXX
INFO - Configuring Service(id=Default Security Serv...
[...]

INFOメッセージを無効にして、他のメッセージの書式を変更したいと考えています。の変更はlog4j.properties効果がありません。

4

4 に答える 4

8

OpenEJB ロガーで得られるオーバーライド機能は、システム プロパティと InitialContext プロパティで機能することに注意してください。

このopenejb.logger.externalプロパティーは、さまざまなロギング・システムを使用し、ロギングを高度に制御する必要がある、Geronimo などの OpenEJB を統合するサーバーを実際に対象としています。このオプションを有効にして他の手順を実行しないため、一般的な使用向けには設計されていません。いかなる種類のログもエラーも取得せず、失敗したデプロイに関する情報も取得しません。正しく使用しても、以下で説明するすべてのオプションが無効になります。

テストの内外でロギング構成を取得したい場合は、OpenEJB が提供するロギング機能を失わずにそれを行う方法がたくさんあります。

オプション 1: InitialContext プロパティを介したコード内

InitialContext プロパティを介したテスト ケース自体

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");

p.put("log4j.rootLogger", "fatal,C");
p.put("log4j.category.OpenEJB", "warn");
p.put("log4j.category.OpenEJB.options", "warn");
p.put("log4j.category.OpenEJB.server", "warn");
p.put("log4j.category.OpenEJB.startup", "warn");
p.put("log4j.category.OpenEJB.startup.service", "warn");
p.put("log4j.category.OpenEJB.startup.config", "warn");
p.put("log4j.category.OpenEJB.hsql", "warn");
p.put("log4j.category.CORBA-Adapter", "warn");
p.put("log4j.category.Transaction", "warn");
p.put("log4j.category.org.apache.activemq", "error");
p.put("log4j.category.org.apache.geronimo", "error");
p.put("log4j.category.openjpa", "warn");
p.put("log4j.appender.C", "org.apache.log4j.ConsoleAppender");
p.put("log4j.appender.C.layout", "org.apache.log4j.SimpleLayout");
p.put("openejb.nobanner", "false");

Context context = new InitialContext(p);

オプション 2: jndi.properties ファイル

ファイルは、「/META-INF/jndi.properties」ではなく、「/jndi.properties」に評価されるパスのクラスパスにある必要があります

Maven では、ファイルをsrc/test/resources/jndi.properties

log4j.rootLogger                   = fatal,C
log4j.category.OpenEJB             = warn
log4j.category.OpenEJB.options     = warn
log4j.category.OpenEJB.server      = warn
log4j.category.OpenEJB.startup     = warn
log4j.category.OpenEJB.startup.service = warn
log4j.category.OpenEJB.startup.config = warn
log4j.category.OpenEJB.hsql        = warn
log4j.category.CORBA-Adapter       = warn
log4j.category.Transaction         = warn
log4j.category.org.apache.activemq = error
log4j.category.org.apache.geronimo = error
log4j.category.openjpa             = warn
log4j.appender.C                   = org.apache.log4j.ConsoleAppender
log4j.appender.C.layout            = org.apache.log4j.SimpleLayout
openejb.nobanner = false

上記のオプションが実際に動作している短いビデオを次に示します。

jndi.properties ファイルの検索と読み取りはJava VMの機能であるため、それが機能しない場合は、VM のバグではなく構成の問題である可能性が高いことに注意してください。

オプション 3: Maven Surefire 構成

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

オプション 4: 任意の組み合わせ

また、個々のテスト ケースに入れたいオーバーライドを含め、上記の手法はすべて一度に使用できることに注意してください。優先順位は次のとおりです。

  1. InitialContext プロパティ
  2. クラスパスの jndi.properties
  3. システム プロパティ (この場合は、surefire によるセットアップ)
  4. クラスパスの embedded.logging.properties

オプション 5: 機能をリクエストする

いつものように、私たちはできる限り物事を簡単にすることをとてもうれしく思っています. 特定のニーズやアイデアがある場合は、喜んでそれに取り組み、貢献したい場合はお手伝いします。

于 2010-11-25T19:46:01.480 に答える
3

これは、物事が適切に機能するようにするために私が行ったことです(pom.xml):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <systemPropertyVariables>
      <openejb.logger.external>true</openejb.logger.external>
    </systemPropertyVariables>
  </configuration>
</plugin>

今は正常に動作します。これは私のtest/resources/jndi.propertiesです:

openejb.validation.output.level=VERBOSE
openejb.nobanner=false

これはtest/resources/log4j.properties次のとおりです。

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

David のサポートのおかげで、テスト中に OpenEJB のロギングを微調整できるようになりました:)

于 2010-11-25T09:42:45.540 に答える
2

Configure Logging in Testsに従って、デフォルトのロギング構成をオーバーライドできます。

  • 作成時に特定のプロパティを配置するInitialContext~または~
  • embedded.logging.propertiesクラスパスにを指定することにより

それが推奨されるアプローチです。

別の方法として、デフォルト構成全体を無効にして、独自のものを提供できます。

システム プロパティとして「openejb.logger.external」を「true」に設定できます (InitialContext プロパティとしては機能しません)。その場合、OpenEJB はログの構成をまったく試行しません。Log4j の API のいずれかを使用して直接ログを構成できます。xml、プロパティ、またはコード。

于 2010-11-14T10:09:43.367 に答える
0

別のロギング フレームワークを使用してもかまわない場合は、これらのリンクが役立つ場合があります。

http://hwellmann.blogspot.fi/2012/11/logging-with-slf4j-and-logback-in.html

JUL から SLF4J へのブリッジ

openejb.logger.external=trueこのアプローチでは使用しないでください。http://grepcode.com/file/repo1.maven.org/maven2/org.apache.openejb/openejb-core/3.0/org/apache/openejb/util/JuliLogStreamFactory.javaを参照してください。

于 2013-02-15T09:51:42.760 に答える