WebLogic 12C集中式Log4J或Logback配置

WebLogic 12C集中式Log4J或Logback配置,log4j,weblogic,slf4j,logback,syslog,Log4j,Weblogic,Slf4j,Logback,Syslog,我想配置一个集中式登录WebLogic 12C。根据业务需求,我必须在生产环境中使用Syslog,并且必须在开发人员和测试环境中提供定制(例如,文件、控制台日志)。我只想为域中的每个应用程序处理1个集中式日志配置。应用程序使用SLF4J API。在Glassfish 3.1和WebLogic 10.3.5中,当我将Logback或Log4J网桥及其实现放入域库并对其进行配置时,它们运行良好。但在WebLogic12c中,我遇到了很多问题。主要问题是WL已经包含模块之间的SLF4J绑定(我不想修改

我想配置一个集中式登录WebLogic 12C。根据业务需求,我必须在生产环境中使用Syslog,并且必须在开发人员和测试环境中提供定制(例如,文件、控制台日志)。我只想为域中的每个应用程序处理1个集中式日志配置。应用程序使用SLF4J API。在Glassfish 3.1和WebLogic 10.3.5中,当我将Logback或Log4J网桥及其实现放入域库并对其进行配置时,它们运行良好。但在WebLogic12c中,我遇到了很多问题。主要问题是WL已经包含模块之间的SLF4J绑定(我不想修改WL,或者我应该修改吗?)。因此,当我放置第二个绑定时,SLF4J无法初始化它/它们,并使用默认的JUL记录器。我还尝试通过WL管理控制台配置Log4J记录器,但只有服务器消息进入Log4J记录器,应用程序的消息仍然进入7月(,)

那么,如何在WebLogic12C域中仅维护1个Log4J或Logback(或满足上述要求的任何其他解决方案)配置


谢谢你的帮助

如果您想使用SLF4J和Logback,以下是一些说明:

您必须捆绑希望与应用程序一起使用的SLF4J和Logback工件(这是我找到的唯一可行的解决方案!我知道通常情况下不会捆绑SLF4J绑定!)。另外,在WAR项目中捆绑一个weblogic.xml(特定于weblogic的web.xml),在EAR项目中捆绑一个weblogic-application.xml(特定于weblogic的application.xml)(如果两者都使用,则选择匹配的一个)。同样,EAR和WAR都必须提供以下工件:

  • slf4j api
  • 回溯堆芯
  • 回归经典
这些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>
<?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应用程序.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>
<?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>

org.slf4j*
org.apache.commons.logging*
org/slf4j/impl/StaticLoggerBinder.class
对于这些xml文件,您告诉WebLogic更喜欢捆绑版本,而不是WebLogic附带的版本(WAR)。对于EAR,这可以在每个包/资源的基础上完成。更准确地说,为指定的包更改类装入器的顺序

虽然仅将SLF4J和Logback JAR与EAR或WAR捆绑在一起会导致错误或根本没有日志记录,但在两者中捆绑工件时也会收到警告。如果有人有改进的想法,请随时发表评论

据我所知,EAR和WAR文件在WebLogic中有不同的类加载器,即使WAR与EAR捆绑在一起。这就是为什么你不能在他们之间共享此LIB,对吗?

配置回登录: 为了能够在运行时更改logback配置,必须在WebLogic类路径中的某个位置放置logback.xml。我发现了很多网站,告诉我WebLogic从域目录加载资源文件,但在我的情况下,它不在类路径中,因此我必须通过服务器启动脚本将其添加到全局类路径(这将影响每个域的回登录设置!)同样,欢迎任何改进