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: 任意の組み合わせ
また、個々のテスト ケースに入れたいオーバーライドを含め、上記の手法はすべて一度に使用できることに注意してください。優先順位は次のとおりです。
- InitialContext プロパティ
- クラスパスの jndi.properties
- システム プロパティ (この場合は、surefire によるセットアップ)
- クラスパスの embedded.logging.properties
オプション 5: 機能をリクエストする
いつものように、私たちはできる限り物事を簡単にすることをとてもうれしく思っています. 特定のニーズやアイデアがある場合は、喜んでそれに取り組み、貢献したい場合はお手伝いします。