WebLogic 12C集中式Log4J或登录配置 [英] WebLogic 12C centralized Log4J or Logback configuration
问题描述
我要配置集中登录到WebLogic 12C。根据业务需求,我必须在生产环境中使用系统日志,并且我必须提供定制(例如,文件、控制台日志)。我只想为域中的每个应用程序处理1个集中式日志配置。应用程序使用SLF4J API。在GlassFish 3.1和WebLogic 10.3.5中,当我将Logback或Log4J桥和它们的实现放入域lib并配置它们时,它们工作得很好。但在WebLogic 12C中,我遇到了很多问题。主要的问题是WL已经包含了模块之间的SLF4J绑定(我不想修改WL,或者我应该修改?)因此,当我放置第二个绑定时,SLF4J无法初始化它/它们,并使用默认的JUL记录器。我还尝试通过WL管理控制台配置Log4J记录器,但只有服务器消息发送到Log4J记录器,应用程序的消息仍然发送到JUL。(http://docs.oracle.com/cd/E24329_01/web.1211/e24428/config_logs.htm#i1011558,https://forums.oracle.com/forums/thread.jspa?threadID=1037672)
那么,如何在WebLogic12C域中仅维护1个Log4J或Logback(或满足上述要求的任何其他解决方案)配置?
谢谢帮助!
推荐答案
如果您想使用SLF4J和LogBack,这里有一些说明:
您必须将您希望在应用程序中使用的SLF4J和Logback构件捆绑在一起(这是我找到的唯一有效的解决方案!我知道正常情况下不会捆绑SLF4J绑定!)还要在WAR项目中捆绑weblogic.xml(WebLogic特定的web.xml),并在EAR项目中捆绑weLogic-Applation.xml(WebLogic特定的Applation.xml)(如果两个都使用,则选择匹配的一个)。同样,EAR和WAR都必须提供以下构件:- slf4j-接口
- 登录-核心
- 登录-经典
这些XML文件的内容:
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>
使用这些XML文件,您可以告诉WebLogic优先选择捆绑版本,而不是WebLogic附带的版本(WAR)。对于EAR,这可以在每个包/资源的基础上完成。更准确地说,为指定的包更改了类加载器的顺序。
虽然只将SLF4J和Logback JAR与EAR或WAR捆绑在一起会导致错误或根本没有日志记录,但是在将构件捆绑在两者中时,您也会收到警告。如果任何人有改进意见,请随时留言! 据我所知,EAR和WAR文件在WebLogic中有不同的类加载器,即使WAR与EAR捆绑在一起。这就是您不能在他们之间共享此库的原因,对吗?配置登录: 为了能够在运行时更改Logback配置,您必须在WebLogic类路径中的某个位置放置一个logback.xml。我找到了很多网站,告诉我WebLogic从域目录加载资源文件,但在我的例子中,它不在类路径中,所以我不得不通过服务器启动脚本将其添加到全局类路径中(这将影响EVERY域的登录设置!)。再次声明,欢迎任何改进!
这篇关于WebLogic 12C集中式Log4J或登录配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!