在jboss 6日志记录中设置替换过滤器

时间:2013-07-18 09:11:37

标签: logging jboss6.x

我想替换日志中的一些子字符串。使用JBOSS 6,它具有专有的日志记录。

例如:

<password>myoutstandingpassword</password>

<password>xxxxxxxxxxxxxxxxxxxxx</password>

到目前为止,我可以使用jboss-logging.xml中的过滤器在日志中过滤此类行。

<filter>
<not><match pattern="password"/></not>
</filter>

此过滤器放在日志处理程序中。这将完全删除该行。

但是如何删除我不知道的子字符串。找不到文档。搜索源代码相当令人筋疲力尽。

注意:应该可以在JBOSS AS 6中使用Log4j - http://www.mastertheboss.com/jboss-log/using-log4j-with-jboss-6。在Log4j中,可能会进行替换。我想在没有它的情况下实施替换。

1 个答案:

答案 0 :(得分:0)

问题是我想过滤掉org.apache.cxf.interceptor.LoggingInInterceptor记录的一些数据。在JBOSS AS 6中实现日志过滤是有问题的,所以最终解决方案是使用我自己的自定义LoggingInInterceptor并修改它。

这样做是这样的:

我创建了一个扩展org.apache.cxf.interceptor.LoggingInInterceptor的类。

public class CXFLoggingInInterceptor extends LoggingInInterceptor {

    private String myCustomLogStringOperation(String logString) {

    ...

    }

    @Override
    protected String transform(String originalLogString) {
        return myCustomLogStringOperation(originalLogString);
    }

}

请注意覆盖方法转换。在那里你将对文本进行操作,然后记录下来!

然后,我为已完成日志记录的Web服务添加了注释。注释是 @OutInterceptors ,它将替换默认的拦截器。

@WebService(
    name = ....
    endpointInterface = ....
)
@InInterceptors(interceptors = package.CXFLoggingInInterceptor)
@Stateless(name = ...)
@Remote(....)
@RemoteBinding(jndiBinding = ....)
public class MyClass implements MyClassInterface

....

CXFLoggingInInterceptor是我们在开始时定义的类。