任何人都可以给出pom.xml
依赖关系配置的示例,这将使OpenEJB使用slf4j日志记录而不是JCL(正如我所理解的那样,这就是它现在使用的。)
答案 0 :(得分:2)
我们支持:
可以通过将类名设置为openejb.log.factory
系统属性的值来插入LogStreamFactory的新实现。
随意复制现有的一个impl并更新JCL或SLF4J。如果你有冲动其他东西的冲动,该项目总是接受新的提交者!
答案 1 :(得分:2)
感谢David的指点,这实际上非常简单。你只需要实现两个分支: - 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在我的logback logger中很好地编译了所有输出:)
答案 2 :(得分:1)
这就是我让OpenEJB使用外部日志记录的方式:
[...]
@Before
public void before() throws Exception {
System.setProperty("openejb.logger.external", "true");
InitialContext ctx = new InitialContext();
}
[...]
也许可以将此系统属性移动到某些全局资源,例如pom.xml
?
答案 3 :(得分: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>
答案 4 :(得分:0)
不是Maven专家,但根据我的理解,你想要这个:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.6.1</version>
</dependency>
如果OpenEJB不支持JCL,那么添加该依赖是没有意义的,所以请使用JUL或Log4j。
您可以在Maven repository找到更多详情。
如果你真的想要使用JCL网桥,请使用:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.1</version>
</dependency>
答案 5 :(得分:0)
如果你是通过Maven的exec插件执行的,请尝试:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>your Mainclass here</mainClass>
<systemProperties>
<systemProperty>
<key>openejb.log.factory</key>
<value>slf4j</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>