【发布时间】:2013-07-26 00:20:27
【问题描述】:
我将 Restlet 与 Jetty8 一起使用。 Jetty 记录所有来电。 我还想记录所有响应数据,网址和正文。 放置日志代码的最佳位置在哪里?
我认为 createOutboundRoot 是这个地方,但我不知道如何使用它,并且在网络上找不到任何示例。
【问题讨论】:
我将 Restlet 与 Jetty8 一起使用。 Jetty 记录所有来电。 我还想记录所有响应数据,网址和正文。 放置日志代码的最佳位置在哪里?
我认为 createOutboundRoot 是这个地方,但我不知道如何使用它,并且在网络上找不到任何示例。
【问题讨论】:
我从未尝试过,但我会从自定义过滤器开始并覆盖处理后,这似乎是 Restlet 本身在内部进行日志记录的方式,请参见 LogFilter 类。
【讨论】:
实现这样的日志过滤器:
public class CustomLogFilter extends Filter {
public CustomLogFilter() {
super();
}
protected int beforeHandle(Request request, Response response) {
int returned = super.beforeHandle(request, response);
// Do specific log if needed
return returned;
}
protected void afterHandle(Request request, Response response) {
super.afterHandle(request, response);
// Do specific log if needed
}
}
如果您有 Application 对象,请在您的 createInboundRoot 中使用它:
public synchronized Restlet createInboundRoot() {
final Router router = new Router(getContext());
CustomLogFilter filter = new CustomLogFilter();
filter.setNext(router);
return filter;
}
【讨论】: