gpt4 book ai didi

jetty - 嵌入式 Jetty(访问)请求日志记录

转载 作者:行者123 更新时间:2023-12-04 18:59:48 25 4
gpt4 key购买 nike

我正在使用 JAX-RS 和嵌入式 Jetty 创建一些休息 API。我通过在 Server.java 文件中添加 LogRequestHandler 来启用服务器日志记录。

问题是为什么 jetty 为每个请求写 200 0:0:0:0:0:0:0:1 - - [03/Nov/2016:16:59:57 +0500] "GET /app/check HTTP/1.1" 200 - 4
尽管未实现检查端点,但应用程序中不存在。

源代码:

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
//context.setContextPath("/");

ResourceConfig config = new ResourceConfig();
config.packages("server");
ServletHolder servlet = new ServletHolder(new ServletContainer(config));
context.addServlet(servlet,"/*");

NCSARequestLog requestLog = new NCSARequestLog("/var/logs/jetty/log-yyyy_mm_dd.request.log");
requestLog.setAppend(true);
requestLog.setExtended(false);
requestLog.setLogTimeZone("GMT+5");
requestLog.setLogLatency(true);
requestLog.setRetainDays(90);
RequestLogHandler requestLogHandler = new RequestLogHandler();
requestLogHandler.setRequestLog(requestLog);

HandlerList topLevelHandlers = new HandlerList();
topLevelHandlers.addHandler(context);
topLevelHandlers.addHandler(requestLogHandler);

try {
jettyServer.setHandler(topLevelHandlers);
jettyServer.dumpStdErr();
jettyServer.start();
}

最佳答案

更新答案
不要使用 RequestLogHandler现在已弃用。
任意 RequestLog接口(interface)实现应该设置在Server.setRequestLog(RequestLog)现在方法。
这将捕获更多请求,甚至是 400(错误请求)、解析失败的请求、不属于上下文的请求,甚至是未分派(dispatch)到处理程序树的请求。
原答案RequestLogHandler应该在任何上下文跟踪之前执行。
理想的使用方式RequestLog是在服务器上设置而不使用RequestLogHandler ...

jettyServer.setRequestLog(requestLog);
但是如果您需要将它用作处理程序,那么您应该确保它在您想要跟踪的任何上下文之前执行......
HandlerList topLevelHandlers = new HandlerList();
topLevelHandlers.addHandler(requestLogHandler);
topLevelHandlers.addHandler(context);
jettyServer.setHandler(topLevelHandlers);
或使用请求日志处理程序包装上下文...
requestLogHandler.setHandler(context);
jettyServer.setHandler(requestLogHandler);

关于jetty - 嵌入式 Jetty(访问)请求日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40401541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com