我已经在这个论坛、jboss 文档和互联网上阅读了很多内容,以成功获得 log4j 配置以与 jboss 一起使用 7.1.1,我不想在 jboss 中使用日志记录子系统。我想使用我自己的 log4j 配置。我的 jboss 服务器配置为独立模式。以下是我根据文档配置 log4j 所做的:
- 根据https://docs.jboss.org/author/display/AS71/How+To#HowTo-HowdoIuselog4j.propertiesorlog4j.xmlinsteadofusingtheloggingsubsystemconfiguration%3F定义一个 jboss-deployment-structure.xml ,我在 META-INF 中添加了这个我的 EAR 目录
- 我按原样添加了一个 log4j.xml,并打包在我耳朵的 lib 目录中的一个 jar 中。
- 从standalone.xml 中删除了日志子系统和扩展模块=“org.jboss.as.logging”。
- 我没有更改在 startup.sh 中作为启动参数提供的 logging.properties,因为我已经读过这是 jboss 服务器在子系统启动之前将使用的日志记录。
尽管做了所有这些,但我无法让应用程序按照我的 log4j 配置进行记录。
我使用我自己的 log4j 配置而不是日志记录子系统的原因是能够为 size-rotating-file-handler 使用自定义滚动文件附加程序,因为我希望旋转的文件具有附加到文件名的时间戳。
帮助表示赞赏,
好的,所以我创建了一个从 SizeRotatingFileHandler.java 扩展的类 MyHandler.java 并覆盖了 preWrite 方法。MyHandler.java 在包 abc 中我在模块 a/b/c 下创建了一个子目录,并在 c 目录中添加了一个仅包含 Myhandler.class 文件的 jar。我添加了一个 module.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>
然后在standalone.xml中我为自定义处理程序添加了一个条目
<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 时,它说它找不到类 abcMyHandler。如何解决此错误?
更新:我解决了这个错误。模块内部的包结构有问题。但是,我仍然要回到原来的问题,即使用 jboss-as-7.1.1.Final 配置 log4j。