如果你想使用SLF4J和的logback这里有一些说明:
你要捆绑你想与你的应用程序中使用SLF4J和的logback神器(这是唯一可行的解决方案,我发现我知道,通常不会绑定一个SLF4J绑定!)。还要在WAR项目中绑定weblogic.xml(WebLogic特定的web.xml),并在EAR项目中绑定weblogic-application.xml(WebLogic特定的application.xml)(如果两者都使用两者,则选择匹配项) 。同样两个EAR和WAR必须提供以下项目:
- SLF4J的API
- 的logback核心
- 这些XML文件中的logback经典
内容:
weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<!-- GERMAN: http://www.torsten-horn.de/techdocs/jee-oracleweblogic.htm -->
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
</wls:weblogic-web-app>
的weblogic-application.xml中
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<!-- GERMAN: http://www.torsten-horn.de/techdocs/jee-oracleweblogic.htm -->
<prefer-application-packages>
<package-name>org.slf4j.*</package-name>
<package-name>org.apache.commons.logging.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
</prefer-application-resources>
</weblogic-application>
随着你告诉WebLogic中喜欢捆绑版本过的人的WebLogic这些XML文件自带(WAR)。对于EAR,这可以在每个包/资源的基础上完成。更精确的说,指定包的类加载器的顺序是变化的。
虽然将SLF4J和Logback jar与仅EAR或WAR捆绑在一起会得到一个错误或根本没有日志记录,但捆绑两个工件时也会收到警告。如果有人有改进的想法,请随时发表评论!
据我所知,EAR和WAR文件在WebLogic中有不同的类加载器,即使WAR与EAR捆绑在一起。这就是为什么你不能在他们之间分享这个库,我说得对吗?
配置Logback: 要能够在运行时更改logback配置,必须在WebLogic类路径中的某处放置logback.xml。我发现了很多网站,告诉我WebLogic从域目录加载资源文件,但在我的情况下,它不在类路径中,所以我必须通过服务器启动脚本将它添加到全局类路径中(这会影响logback设置为EVERY域!)。 再次,任何改进,欢迎!