Java 如何使用wildfly在文件上记录运行时错误
我在wildfly 18上部署了几个具有相同groupId的web应用程序模块,比如org.foo.ecommerce 这些模块配置有自己的子组,因此:Java 如何使用wildfly在文件上记录运行时错误,java,logging,wildfly,jboss-logging,Java,Logging,Wildfly,Jboss Logging,我在wildfly 18上部署了几个具有相同groupId的web应用程序模块,比如org.foo.ecommerce 这些模块配置有自己的子组,因此: 模块1-org.foo.ecommerce.mod1 模块2-org.foo.ecommerce.mod2 模块3-org.foo.ecommerce.mod3 因此,我为每个模块配置了一个处理程序,如下所示: <periodic-rotating-file-handler name="MOD1_HANDLER">
<periodic-rotating-file-handler name="MOD1_HANDLER">
<level name="DEBUG"/>
<encoding value="UTF-8"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] - %s%E%n"/>
</formatter>
<file relative-to="log.path" path="mod1.log"/>
<suffix value=".yyyy-MM-dd"/>
</periodic-rotating-file-handler>
<logger category="org.foo.ecommerce.mod1" use-parent-handlers="false">
<handlers>
<handler name="MOD1_HANDLER"/>
</handlers>
</logger>
注意,即使我声明了自己的异常,行为也是一样的
@javax.ejb.ApplicationException(rollback = true)
public class ApplicationException extends RuntimeException {
}
最好使用每次部署日志记录。通过这种方式,您可以获得基于该部署的任何日志,而不仅仅是基于类的包名。
NullPointerException
总是记录到服务器上。log
是因为它来自RESTEasy。任何服务器级模块都将在服务器日志配置级别进行日志记录。如果部署创建了自己的日志配置,则只有从部署记录的日志消息才会记录到该配置中
也就是说,存在一个未解决的问题,它可能允许将在服务器模块中创建的日志记录到部署配置中。我仍然可以使用jboss日志记录还是应该禁用它?是否有关于如何配置每次部署日志记录的指南?更新:我添加了slf4j-log4j12库和log4j.properties,但我无法发现错误处理方式的差异,因为我可以看到NullPointerException只记录在服务器开发输出上。您可以发布包含NPE的日志条目吗?我已经更新了问题,请参见底部的部分,实际上仍然没有解决问题,因此目前还没有解决方案?目前的技巧是构建一个从rest API调用的拦截器,捕获runtimeexception并记录它。正确的,除了您建议的解决方案之外,目前没有其他解决方案。
@javax.ejb.ApplicationException(rollback = true)
public class ApplicationException extends RuntimeException {
}