我目前正在使用 Restlet 编写 Web 服务,并在 log4j 前面使用 slf4j 进行日志记录。目前我有标准的 log4j Appenders 用于记录到文件。我试图做的还包括使用自定义 Appender 在 HTTP 响应中的日志输出。
我看到的问题是 Appender 默认无法访问正在发出的请求的上下文,这是有道理的,因为理论上请求可以在异步 Appender 开始执行之前完成。我仍然很好奇这是否可能,也许是通过使 Appender 同步并通过日志调用传递一个 Response 对象。我找不到 log4j 支持这个的方法,另一个框架会像 logback 吗?由于性能影响,我最终不一定会使用这种方法,但我仍然很好奇。
仅供参考,我当前的解决方法是自定义日志方法,它将条目添加到响应中,然后调用 slf4j 方法进行标准日志记录。这样做的缺点是必须使用自定义方法,并且我只获取我控制的代码的日志条目(我正在使用的仅使用 Appenders 的库不会被记录到响应中)