当前位置: 首页 > 知识库问答 >
问题:

使用jboss-as-7.1.1配置log4j

钱劲
2023-03-14

我一直在这个论坛,jboss文档和互联网上阅读了很多成功获得log4j配置以与jboss一起工作为7.1.1,我不想使用jboss中的日志子系统。我想使用我自己的log4j配置。我的jboss服务器配置为独立模式。以下是我为基于文档配置log4j所做的事情:

  1. 根据https://docs.jboss.org/author/display/AS71/HowTo#HowTo-HowdoIuselog4j.propertiesorlog4j.xmlinsteadofusingtheloggingsubsystemconfiguration?定义jboss-deployment-structure.xml,并将其添加到EAR的META-INF目录中
  2. 我按原样添加了一个log4j.xml,并打包在我耳朵的lib目录中的一个jar中。
  3. 删除了日志子系统和扩展模块="org.jboss.as.logging"从standalone.xml.
  4. 我没有更改startup.sh中作为启动参数提供的logging.properties,因为我读到的是jboss服务器在子系统启动之前将使用的日志记录。

尽管做了所有这些,但我无法让应用程序按照我的log4j配置进行日志记录。

我之所以使用自己的log4j配置而不是日志子系统,是为了能够为大小旋转文件处理程序使用自定义的滚动文件附加器,因为我希望旋转的文件在文件名上附加一个时间戳。

感谢您的帮助,

好的,我创建了一个类MyHandler。从SizeRotatingFileHandler扩展而来的java。java和我重写了预写方法。MyHandler。java在包a.b.c中。我在模块a/b/c下创建了一个子目录,在c目录中添加了一个jar,其中只有Myhandler。类文件。我添加了一个模块。xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="a.b.c">
     <resources>
           <resource-root path="RotatingHandler.jar"/>
          <!-- Insert resources here -->
     </resources>
     <dependencies>
          <module name="org.jboss.logging"/>
     </dependencies>
</module>

然后在单机版中。xml I为自定义处理程序添加了一个条目

<custom-handler name="FILE3" class="a.b.c.MyHandler" module="a.b.c">
        <level name="INFO"/>
        <formatter>
            <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="srveree.log"/>
    </custom-handler>

当我启动Jboss时,它说它找不到类a.b.c.MyHandler。如何解决此错误?

更新:我解决了这个错误。模块内的包结构存在问题。然而,我仍然要回到使用jboss-as-7.1.1配置log4j的原始问题。最终的

共有3个答案

东郭兴学
2023-03-14

考虑单机版中的配置。xml位于

<subsystem xmlns="urn:jboss:domain:logging:1.1">

在这里可以设置

<console-handler name="CONSOLE">
            <level name="DEBUG"/>
...
        <logger category="com.myCompany">
            <level name="DEBUG"/>
        </logger>
...

意思是:你的记录器在你的类中,这些类在包com中。myCompany应该从调试级别登录

严心水
2023-03-14

您没有指出的一件事是,您是否也在您的EAR/lib文件夹中添加了log4j库。我想你可能有,或者你应该看到其他错误。

老实说,我不确定log4j是否会在EAR中的JAR中包含log4j.xml。我认为EAR/META-INF更适合您的log4j配置文件。

在这种情况下,没有真正的理由删除日志子系统。此外,我并不想说服您使用它,但您可以相当轻松地创建一个自定义处理程序来完成您想要做的事情。您可以基于SizeRotatingFileHandler,然后在重命名上添加后缀。

盖和泰
2023-03-14

我能够使用jboss配置log4j。事实证明,您需要为主部署中的每个子部署单独添加注释。例如,我有一个耳朵,里面有jar和war文件。所以我在jboss-deployment-structure.xml中为它们中的每一个添加了单独的条目,它起作用了。

<sub-deployment name="your-subdeployment.jar">
    <exclusions>
        <module name="org.apache.log4j"/>
        <module name="org.slf4j" />
        <module name="org.apache.commons.logging"/>
        <module name="org.log4j"/>  
        <module name="org.jboss.logging"/>
    </exclusions>
</sub-deployment>
 类似资料:
  • 出于某种原因,JBoss AS 7.2无法下载(这本身就是一个问题)。但是AS7.2和7.1.1之间有什么变化呢?如果我们在7.1.1上测试,构建在7.2上不能工作的风险是什么? 谢谢

  • 我有一只耳朵,它将战争作为一个次级部署。ear文件有一个META-INF目录,其中有一个jboss ejb客户端。xml文件,它只有一个ejb接收器元素和一个webscheduler。战争这场战争使用了commons日志api。罐子该应用程序作为7.1.1部署在jboss上。最终的我想使用apache log4j进行日志记录。所以我添加了一个jboss部署结构。ear的meta-inf目录中的xm

  • 我正在尝试部署一个sar文件,但是我得到了一个与java.lang.ClassNotFoundException相关的错误。我的sar文件是 我的sar文件具有以下结构

  • 问题内容: 我在使用在XML log4j配置文件中定义的附加程序进行记录时遇到麻烦。 我在EAR的META-INF文件夹上创建了 jboss-deployment-structure.xml ,没有成功。 在 JBoss的部署,structure.xml 结构为: 我什至尝试编辑我的 standalone.conf.bat 文件并添加以下行: 我的应用程序部署是这样的: 我注意到以下错误: 子部署

  • 我最近声明使用IntelliJ JRebel,到目前为止我很喜欢它。 只有一件事有点烦人。您不能像在Eclipse中那样看到JBoss部署目录的内容(在那里您可以看到当前部署的所有文件)。 据我所知,IntelliJ正在以一种特定的方式启动JBoss,它指向存档(耳朵/战争/任何东西)编译到的目录。 但现在我遇到了一个问题,IntelliJ似乎在某个地方有一个旧版本的战争(我在创建战争的目标文件夹

  • 我正在尝试使用Maven javadoc插件为多个项目生成聚合javadoc。如果我运行javadoc:javadoc目标,构建将成功完成。无论如何,我想将所有javadoc与javadoc:aggregate目标结合起来,但在尝试查找org时失败了。jboss。理学硕士。服务包: 如何配置maven javadoc插件以排除此导入?我尝试了以下设置: 但运气不好。感谢所有帮助!