【问题标题】:JBoss AS 6 and Log4jJBoss AS 6 和 Log4j
【发布时间】:2013-04-11 17:21:21
【问题描述】:

我知道有很多关于这个主题的帖子,但我没有发现任何有用或相关的帖子。

我有一个简单的要求。我正在从 JBoss AS 4.0.4 迁移到 JBoss AS 6。在我的 4.0.4 环境中,我在 server/myconfig/conf 文件夹中有一个 log4j.xml,在 server/myconfig/lib 中有一个 log4j.jar。我意识到 JBoss AS 6 已更改为原生日志框架。我们严重依赖 log4j,改变是不切实际的。我看到很多帖子说要在应用程序中打包 log4j jar 和 log4j.xml 文件。我在 deploy 和 lib 中有几十个 jar 和 war 文件。我真的会被期望将 log4j.jar 和 log4j.xml 打包到所有这些中吗?我希望不会,所以也许设置 -Djboss.as.logging.per-deployment=false 会有所帮助?但是我仍然看到有人说即使使用该设置也要将 log4j.jar 和 log4j.xml 放入 ear/war 文件中。

如果有人可以请告诉我如何模仿我的 4.0.4 设置。

谢谢, 保罗

【问题讨论】:

  • 您是否真的尝试过单独部署 log4j jar,只是 .jar。我认为这会起作用,因为“JBossAS6 默认使用共享 CL 域,即“big-ball-o-mud”。” (source)
  • @eis 是的,我在 server//lib 中有 log4j.jar。我在 server//conf 中有 log4j.xml,并使用文件名 serverX.log 定义了文件 appender,但出现的文件是 server.log。所以它使用(我猜)server/deploy/jboss-logging.xml 中定义的 JBoss 的本机日志记录。
  • 这不是我的意思。如果你在 server/lib 中有它,那么你是从共享类路径中使用它的。将其用作部署怎么样?

标签: jboss log4j jboss6.x


【解决方案1】:

我认为没有必要在你的应用程序中打包 log4j jar。

做以下事情:

1.) 在 Standalone.conf.bat 文件中设置以下参数 设置“JAVA_OPTS=%JAVA_OPTS% -Dorg.jboss.as.logging.per-deployment=false

2.) 为 log4j 制作一个模块。在 log4j 的模块文件夹中。作为参考,您可以检查已经存在的其他文件夹。

3.) 将 jboss-deployment-structure.xml 放在 web-inf 文件夹中。 该文件将包含以下内容

<jboss-deployment-structure>
    <deployment>
        <include>
            <module name="org.apache.log4j" />
        </include>
    </deployment>
</jboss-deployment-structure>

它将在您的应用程序中包含 log4j jar。

【讨论】:

  • 感谢您抽出宝贵时间回复。我不知道 Standalone.conf.bat 是什么(或它的 Linux 等价物,因为那是我所在的平台)。但是在我的 jboss 启动脚本中,我已经设置了 -Dorg.jboss.as.logging.per-deployment=false。所以我想我已经涵盖了你的步骤(1)。至于步骤(2),我不知道您所说的“模块”文件夹是什么意思。据我所知,Jboss 安装没有这样的文件夹。因此,您能否详细说明步骤 (2) 和 (3) 的含义。谢谢。
  • 因为你已经在你的 linux 环境中安装了 jboss。所以去你的$JBOSS_HOME,它应该包含modules文件夹。
  • 相信你说的是JBoss 7。我用的是JBoss 6.1。
【解决方案2】:

我在 Jboss 6.1 上使用 Log4J 没有任何问题。

从来不需要在任何地方包含 Log4J jar,似乎包含(检查这个,我在 client/lib 下找到它)。

我必须做的唯一特别的事情是将我的 Log4J 配置集成到 server/&lt;config&gt;/deploy/jboss-logging.xml(布局非常类似于 log4j.xml)。

之后,我只在我的课程中使用org.apache.log4j.Logger,一切都按预期工作。

【讨论】:

  • 你是如何在 Java 端使用 Logger 的?
【解决方案3】:

JBoss 自动注入 log4J 1.2、SLF4J、common-logging 和 java.util.logging 的 API。请将其与应用程序打包。

您可以将日志记录配置添加到:serverDirectory\standalone\configuration\standalone.xml(或您选择使用的任何配置)。

下面是添加日志配置的部分(JBoss EAP 6):

<subsystem xmlns="urn:jboss:domain:logging:1.3">
    <root-logger>
        <level name="INFO"/>
        <handlers>
            <handler name="CONSOLE"/>
            <handler name="FILE"/>
        </handlers>
    </root-logger>
</subsystem>

【讨论】:

  • 这个问题是针对 JBoss AS6,而不是 EAP6。
猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多