JCA(资源适配器)日志记录不适用于 Weblogic 12.2.1.2

JCA (Resource Adapter) logging not working on Weblogic 12.2.1.2

我正在尝试解决与从出站资源适配器进行日志记录相关的问题。

它运行在 Weblogic 12.2.1.2 上,并且是按照 Oracle J2EE guide.

编写的

我已经按照 Oracle documentation 设置了日志记录描述符,当我部署它时,weblogic 在描述符提供的位置创建了一个新的空日志文件(正如预期的那样)。

我已深入遵循指南 Writing Messages to the WebLogic Server Log. I tried with java.util.logging, the NonCatalogLogger by the mock JARslf4j 因此,所有日志消息都打印到 控制台 和进入域日志文件,但没有进入我配置的日志文件。

谁能告诉我为什么?

非常感谢!

不幸的是,我无法让 weblogic 工作,所以我不得不寻找替代方案。

这是我基于 Logback 的解决方案。

pom.xml

<properties>
    <logback.version>1.2.3</logback.version> <!-- Depends on slf4j 1.7.25, conflicting with Weblogic 12.2.1.2 -->
    <slf4j.version>1.7.5</slf4j.version> <!-- Shipped with Weblogic 12.2.1.2 -->

    <adapter.config.file>/etc/logback-my-resource-adapter.xml</adapter.config.file>
</properties>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
    </dependency>
</dependencies>

LoggerHelper.java

package it.sisal.betting.sdg.adapter.sogei.logging;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.util.ContextInitializer;
import org.slf4j.ILoggerFactory;

    public class LoggerHelper {

        static {
            // https://logback.qos.ch/manual/configuration.html

            System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, "${adapter.config.file}");
        }

    public static final ILoggerFactory FACTORY = StaticLoggerBinderHack
        .getSingleton()
        .getLoggerFactory()
    ;

    public static LoggerContext CONTEXT = (LoggerContext)FACTORY;

}

MyResourceAdapter.java

public class MyResourceAdapter implements ResourceAdapter, Serializable {

    private static final Logger logger = LoggerHelper
        .FACTORY
        .getLogger(MyResourceAdapter.class)
    ;

    private BootstrapContext context = null;

    @Override
    public void start(BootstrapContext context) 
        throws ResourceAdapterInternalException 
    {            
        if (logger.isInfoEnabled()) {
            logger.info("start(...)");
        } 

        this.context = context;
     }

     // And so on...
}