【发布时间】:2021-10-21 10:19:42
【问题描述】:
我正在 Jetty11 中实现自定义日志记录,并在从请求对象中获取任何内容时获取以下代码的空指针异常。 我知道原因,但没有解决方案。原因是:在设置之前调用请求对象的方法。 我知道,应该有另一种方法来做到这一点。 我的用例是将 int 和 string 属性设置为记录器。在这个例子中,我调用 request.getMethod() 但我也必须调用其他方法
import org.eclipse.jetty.server.CustomRequestLog;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
public class JettyCustomLogger extends CustomRequestLog
{
private static Request request;
@Override
public void log(Request request, Response response)
{
this.request = request;
super.log(request, response);
}
public JettyCustomLogger(Writer writer, String logStr)
{
super(writer, setCustomAttributesToLog(logStr));
}
private static String setCustomAttributesToLog(String logStr)
{
String method = request.getMethod();
StringBuilder logBuffer = new StringBuilder(logStr);
logBuffer.append(method);
logBuffer.append("Ashish");
logBuffer.append(" ");
logBuffer.append("Goyanka");
logBuffer.append(" ");
logBuffer.append("absgdh");
logBuffer.append(" ");
return logBuffer.toString();
}
}
注意:如果我不调用请求对象方法,此代码可以正常工作。
更新:创建 setCustomAttributesToLog() 的原因是我需要在运行时从其他方法中获取字符串参数,但在这里,为了代码可读性,我给出了硬编码字符串
【问题讨论】:
标签: java eclipse jetty application-server jetty-10