我一直在阅读很多关于这个论坛,jboss文档和互联网上成功获取log4j配置以使用jboss作为7.1.1,我不想使用jboss中的日志子系统。我想使用我自己的log4j配置。我的jboss服务器配置为独立模式。下面是我做的log4j配置为基于Docs软件以便得到:使用jboss-as-7.1.1配置log4j
- 定义一个JBoss部署,structure.xml按https://docs.jboss.org/author/display/AS71/How+To#HowTo-HowdoIuselog4j.propertiesorlog4j.xmlinsteadofusingtheloggingsubsystemconfiguration%3F,我添加了这个在我耳边
- 我的META-INF目录按原样添加一个log4j.xml,并将其打包在我的耳朵的lib目录中的jar中。
- 从standalone.xml中删除日志子系统和扩展模块=“org.jboss.as.logging”。
- 因为我读过的是,JBoss服务器将子系统踢之前,使用记录我并没有改变其作为startup.sh启动参数提供的logging.properties。
尽管做了所有这些,我无法让应用程序按照我的log4j配置进行登录。
我使用我自己的log4j配置而不是日志子系统的原因是能够使用自定义滚动文件appender进行大小旋转文件处理程序,因为我希望旋转后的文件具有时间戳附加到文件名。
帮助理解,
好了,我创建从SizeRotatingFileHandler.java延伸的类MyHandler.java和我重写预写方法。 MyHandler.java位于a.b.c包中。我在模块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它说,它不能找到类a.b.c.MyHandler。我如何解决这个错误?
更新:我解决了这个错误。模块内部的包装结构存在问题。但是,我仍然回到了用jboss-as-7.1.1.Final配置log4j的原始问题。
谢谢你的回应James。是的,EAR/lib目录中有一个log4j-1.2.17.jar。另外我也尝试将log4j.xml放在EAR/META-INF目录中,但它仍然没有从那里读取日志配置。 – TYS
对SizeRotatingFileHandler的引用很有趣,我试着扩展SizeRotatingFileHandler并仅覆盖preWrite方法。但是我不知道如何获取当前日志文件的句柄。 – TYS
我不确定通过获取当前日志文件的句柄来遵循你的意思。 –