我正在尝试解决与从出站资源适配器进行日志记录有关的问题。
它在Weblogic 12.2.1.2上运行,并且是在Oracle J2EE guide之后编写的。
我已经按照Oracle documentation设置了日志记录描述符,并且在部署它时,weblogic在描述符提供的位置(如预期的那样)创建了一个新的空日志文件。
我已经严格遵守指南Writing Messages to the WebLogic Server Log。我尝试了mock JAR和 slf4j 的 java.util.logging , NonCatalogLogger ,因此,所有日志消息都被打印到控制台并进入域日志文件,但不进入我配置的日志文件。
有人可以告诉我为什么吗?
非常感谢您!
答案 0 :(得分:0)
不幸的是,我无法使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...
}