当前位置: 首页 > 面试题库 >

Spring-如何使SoapEnvelopeLoggingInterceptor适应于将数据比标准输出更正式地记录到日志文件

夏侯旻
2023-03-14
问题内容

我正在尝试对我的Spring Web服务请求/响应进行正式审核。

我在Spring配置中就位了:

<ws:interceptors>   
   <bean class="org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor"/>
</ws:interceptors>

很好,并将请求和响应记录到我的JBoss日志文件中。不过,我想要的是能够适应这种情况,并更干净地记录这些请求/响应,以及如何获取数据,以便可以在数据库中写入审核记录。

我如何才能在上面进行调整,以便可以映射到我的一个bean或类似的bean并获取请求和响应中的数据?


问题答案:

您应该只能够创建的子类SoapEnvelopeLoggingInterceptor并重写 logMessage(String)以完成所需的操作。例:

<ws:interceptors>   
   <bean class="org.mypackage.SysErrLoggingInterceptor"/>
</ws:interceptors>


package org.mypackage;

public class SysErrLoggingInterceptor extends SoapEnvelopeLoggingInterceptor {
    @Override
        protected void logMessage(String message) {
        System.err.println(message); 
        /* Example, here you could be logging to DB or whatever you want */
    }

}


 类似资料:
  • 问题内容: 我对jdk日志记录配置有疑问。我有一个使用JDK Logging输出消息的EJB(已部署到glassfish中)。因此,我使用具有以下代码的命名记录器: 我知道可以通过将以下行添加到Glassfish的logging.properties文件中来为记录器配置日志级别: 但是,如何为记录器指定输出文件?我想将来自名为“ org.imixs.workflow”的记录器的所有消息放入单独的文

  • 当JMeter以非gui模式启动时,它显示了控制台上的一些日志,如下所示 但实际的测试执行日志会写入一个名为jmeter的单独日志文件。日志,它记录log4J级别的执行日志。 我们可以把这个jmeter.log内容也直接到STDOUT控制台吗?我知道我们可以将日志管道到控制台。但是有没有一种方法可以使用JMeter配置来做到这一点? 我将JMeter作为Kubernetes集群上的容器运行,并希望

  • 问题 你希望将单元测试的输出写到到某个文件中去,而不是打印到标准输出。 解决方案 运行单元测试一个常见技术就是在测试文件底部加入下面这段代码片段: import unittest class MyTest(unittest.TestCase): pass if __name__ == '__main__': unittest.main() 这样的话测试文件就是可执行的,并且会将

  • 问题内容: 构造之后,使用标准的Java日志记录API(导入java.util.logging.Logger): 我已经可以登录了。由于它没有FileHandler,因此不会向磁盘写入任何内容。 它写入(不是全部)日志消息以输出。如何禁用此功能?在此先感谢Agostino 问题答案: 如果您不知道Java util日志记录的默认配置,就会出现问题。体系结构事实:0)每个记录器(无论其名称是什么)都

  • 标题应该是不言自明的。 出于调试目的,我希望express打印每个服务请求的响应代码和正文。打印响应代码很容易,但打印响应体更为复杂,因为响应体似乎不容易作为属性使用。 以下情况不起作用: 当然,我可以很容易地在发出请求的客户端打印响应,但我也更喜欢在服务器端打印。 PS:如果有帮助的话,我所有的响应都是json,但希望有一个解决方案可以处理一般的响应。

  • 问题内容: 在bash中,调用将在stdout上显示该命令的任何输出。 调用会将该命令的任何输出重定向到指定的文件(在本例中为“输出”)。 有没有一种方法可以将输出重定向到文件 并 在stdout上显示? 问题答案: 您想要的命令名为 : 例如,如果您只关心标准输出: 如果要包括stderr,请执行以下操作: 将通道2(stderr /标准错误)重定向到通道1(stdout /标准输出),以便将两