【问题标题】:Configure Jboss eap 6.2 to use log4j2配置 Jboss eap 6.2 以使用 log4j2
【发布时间】:2014-10-07 14:44:52
【问题描述】:

您好,我已经开发了一个多模块 j2ee ear 部署,我需要更改它的日志配置以使用 log4j2。

部署包不包含任何 log4j 配置,它使用 jboss 默认的本地日志,我需要做的是将 jboss 本地日志更改为 log4j2。到目前为止,我找到了一种方法,即在每个模块中包含 log4j2 库和一个 log4j 配置文件。但是这种方法似乎很成问题,因为如果需要更改日志记录级别,我将不得不部署整个应用程序来更改所有 log4j 配置文件。

我的问题是,他们是否可以通过任何方式更改 Jboss 中的配置(不在我的应用程序中)以使用 log4j2 进行日志记录?

【问题讨论】:

    标签: jakarta-ee jboss log4j jboss6.x log4j2


    【解决方案1】:

    我一直在寻找同样问题的答案,这就是我发现的。

    如果你想使用 JBoss 的日志系统(在standalone.xml 文件中定义你的日志),你不能从 JBoss EAP 6.3 (JBoss 7) 开始使用 Log4j2。 JBoss 目前只支持 log4j 1.2.X。

    此外,您不能在您的 Web 应用程序中包含 log4j JAR。 JBoss 自动注入 log4J 1.2、SLF4J、common-logging 和 java.util.logging 的 API,但前提是应用程序不包含这些 API。希望这对其他人有帮助。

    最后一点:我找不到 Log4j2->Log4j 桥或其他机制。

    【讨论】:

      【解决方案2】:

      您可以将以下内容添加到您的 jboss-deployment-structure.xml(包含在战争中)

      <?xml version="1.0" encoding="UTF-8"?>
      <jboss-deployment-structure>
         <deployment>
            <!-- 
            Prevent that the server add automatically dependencies -->
            <!-- Exclude all logging dependencies so we can use log4j2 -->
            <exclusions>
               <module name="org.apache.commons.logging" />
               <module name="org.apache.log4j" />
               <module name="org.jboss.logging" />
               <module name="org.jboss.logging.jul-to-slf4j-stub" />
               <module name="org.jboss.logmanager" />
               <module name="org.jboss.logmanager.log4j" />
               <module name="org.slf4j" />
               <module name="org.slf4j.impl" />
            </exclusions>  
         </deployment>
      </jboss-deployment-structure>
      

      然后,如果您添加适当的模块定义,您可以将 log4j2 jar 包含在您的应用程序中,并将 log4j2 配置文件放在文件系统文件夹中。

      这一切都取决于您的应用程序正在使用的日志记录 API - 例如。它是针对哪个 api 编译的。如果您可以更改它,我建议使用 slf4j,这将是最灵活的解决方案。

      【讨论】:

        【解决方案3】:
        The Log4J configuration file is located at server/xxx/conf/jboss-log4j.xml in jboss.
        
        If you use Log4J or Apache Jakarta Commons Logging within your application, you can log your application by adding category entries to the jboss-log4j.xml file. For example, if your application uses the package name org.jbia, you can log the classes in that package and its subpackages by adding a category to the jboss-log4j.xml file, as shown below :
        
        <log4j:...>
        <category name="org.jbia">
        <priority value="DEBUG"/>
        </category>
        </log4j>
        

        【讨论】:

        • logging.apache.org/log4j/2.x 我正在尝试使用 log4j2.. 但根据 jboss 配置,默认情况下似乎不支持。您的建议是为 log4j 1.x 配置 jboss 的方式不是吗?
        • 是的,你可以像这样为 log4j 配置 jboss。我已经在 jboss 目录中实现了它,效果很好。
        • 你的意思是它适用于带有异步日志记录的 log4j2 吗?
        • Arjun,我仍然认为您在谈论 log4j-1.2.x,而不是 log4j-2.0,还是我遗漏了什么?对于异步日志记录,您的意思是异步附加程序,对吗?这与 log4j-2.0 异步记录器不同。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-20
        • 1970-01-01
        • 2014-12-25
        • 1970-01-01
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多