【发布时间】:2016-04-29 14:52:23
【问题描述】:
我有一个服务 web 请求的 spring 应用程序。每个请求方法都是这样的
@RequestMapping(value = someUri, method = RequestMethod.POST)
Response someUriProcessor (SomeRequestModelMethod request) throws Exception {
try (JsonLogger logger = new JsonLogger(request, loggingTest1Uri)){
// get actual result
Response result = getSomeResultMethod(request);
// feed result to special logging object
logger.setResult (result);
// return result to client
return result;
}
}
JsonLogger 类通过close方法生成JSON对象,并通过标准的slf4j日志框架记录下来,上传到日志分析工具(Splunk),记录请求、响应、响应时间等。
在执行大量工作的 getSomeResultMethod 期间,使用标准 slf4j 和生产环境中的 logback 绑定生成大量有用的日志。 我希望这些日志包含在 JsonLogger 中,而不涉及所有底层类(它们有很多),比如使用方法 JsonLogger.appendToResultLog(String txt)。我的第一个想法是创建自己的包装 slf4j 绑定,在每次调用 logger.info、logger.error 等方法时展开堆栈跟踪,使用反射到 rest 控制器方法并在其中附加日志字符串 JsonLogger。
我有强烈的感觉,我正在发明一辆自行车。是否有或多或少的标准方法来实现所需的结果?
【问题讨论】:
-
使用某种形式的方面?
标签: java spring spring-mvc slf4j splunk