3

OpenEJBがJCLの代わりにslf4jロギングを使用するようにする依存関係構成の例を誰でもpom.xml挙げることができます(私が理解しているように、これが現在使用されているものです)。

OpenEJB ロギングを構成する方法も参照してください。

4

6 に答える 6

2

私たちは以下をサポートしています:

LogStreamFactoryの新しい実装は、クラス名をopenejb.log.factoryシステムプロパティの値として設定することでプラグインできます。

既存のimplの1つをコピーして、JCLまたはSLF4Jのいずれかに更新してください。他のこともハックしたいという衝動に駆られた場合、プロジェクトは常に新しいコミッターを受け入れています!

于 2010-11-10T17:50:17.483 に答える
2

David の指示のおかげで、これは実際には非常に簡単です。次の 2 つのクラスを実装するだけで済みます。 - Slf4jLogStreamFactory - Slf4jLogStream

次に、ファクトリを設定します: System.setProperty("openejb.log.factory", "de.glauche.Slf4jLogStreamFactory");

package de.glauche;

import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.LogStream;
import org.apache.openejb.util.LogStreamFactory;

public class Slf4jLogStreamFactory implements LogStreamFactory {

    @Override
    public LogStream createLogStream(LogCategory logCategory) {
        return new Slf4jLogStream(logCategory);
    }

}

および Slf4jLogStream:

package de.glauche;

import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.LogStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Slf4jLogStream implements LogStream {
    private Logger log;

    public Slf4jLogStream(LogCategory logCategory) {
        log = LoggerFactory.getLogger(logCategory.getName());
    }

    @Override
    public boolean isFatalEnabled() {
        return log.isErrorEnabled();
    }

    @Override
    public void fatal(String message) {
        log.error(message);
    }

    @Override
    public void fatal(String message, Throwable t) {
        log.error(message,t);
    }
        ... (overwrite the remaining methods like this)

これにより、slf4jを介してログバックロガーで適切にフォーマットされたすべての出力を取得しています:)

于 2011-03-31T10:15:41.573 に答える
1

これは、外部ロギングを使用するように OpenEJB を作成した方法です。

[...]
@Before
public void before() throws Exception {
  System.setProperty("openejb.logger.external", "true");
  InitialContext ctx = new InitialContext();
}
[...]

このシステム プロパティをグローバル リソースに移動することは可能pom.xmlでしょうか。

于 2010-11-25T09:44:09.360 に答える
0

API と JCL の依存関係を追加すると、SLF4J API を使用したログはデフォルトの JCL ログに送信されます。

それはあなたが望むものですか?または、ロギングに別のバックエンドを使用しますか?

 <dependencies>
   <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.1</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jcl</artifactId>
        <version>1.6.1</version>
    </dependency>
</dependencies>
于 2010-11-09T12:59:10.670 に答える
0

Mavenの専門家ではありませんが、私の理解では、これが必要です:

<dependency>
    <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
    <version>1.6.1</version>
</dependency>

OpenEJB が JCL をサポートしていない場合、その依存関係を追加しても意味がないため、JUL または Log4j を使用してください。

詳細については、 Maven リポジトリを参照してください。

本当に JCL ブリッジを使用したい場合に備えて、これを使用します。

<dependency>
    <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
    <version>1.6.1</version>
</dependency>
于 2010-11-10T20:00:59.697 に答える