配置 Jetty 10/11 请求日志

2023-12-02

我正在浏览帖子码头伐木并试图找出打印的每个属性的含义

123.4.5.6 - - [2004 年 8 月 27 日:10:16:17 +0000] “获取/jetty/tut/XmlConfiguration.html HTTP/1.1” 200 76793“http://localhost:8080/jetty/tut/logging.html” “Mozilla/5.0(X11;U;Linux i686;en-US;rv:1.6)Gecko/20040614 Firefox/0.8”

我得到了一些问题的答案,但仍然无法弄清楚下面提到的一些问题。

  1. 123.4.5.6 : 请求.getRemoteAddr()
  2. 破折号(-):无法弄清楚
  3. 破折号(-):无法弄清楚
  4. [27/Aug/2004:10:16:17 +0000]:时间戳
  5. GET : 请求.getMethod()
  6. jetty/tut/XmlConfiguration.html : request.getRequestURI()
  7. HTTP/1.1 : request.getProtocol()
  8. 200:response.getStatus()
  9. 76793:response.getHttpChannel().getBytesWritten()
  10. http://localhost:8080/jetty/tut/logging.html:无法弄清楚
  11. Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8 : request.getHeader("User-Agent")

如果我对其他属性的理解有误,请纠正我。


Jetty 的最新版本使用以下命令记录请求CustomRequestLog format.

它有 2 种默认的“NCSA”输出格式(以及其他一些格式和自定义格式的能力)

  1. NCSA_FORMAT- 语法声明"%{client}a - %u %t \"%r\" %s %O"
  2. EXTENDED_NCSA_FORMAT- 语法NCSA_FORMAT + " \"%{Referer}i\" \"%{User-Agent}i\""

所以,根据文档CustomRequestLog,这意味着以下输出...

123.4.5.6 - - [27/Aug/2004:10:16:17 +0000]“GET /jetty/tut/XmlConfiguration.html HTTP/1.1”200 76793“http://localhost:8080/jetty/tut/logging .html" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8"

实际上是扩展的 NCSA 格式之一。

就这样崩溃了...

  1. 123.4.5.6 : the %{client}a哪一个是request.getRemoteHost()
  2. - : the -硬编码的字符串-在 Jetty 中,该条目将是“远程日志名称用户”,但由于 Jetty 不支持 identd,因此我们没有办法填写此值(identd 是老式技术,从未被大规模采用) http)
  3. - : the %u这是经过身份验证的用户名,来自 Jetty 内部 API(例如:Request.getAuthentication() or Authentication.getUserIdentity()- 仅当您的 web 应用程序使用 Servlet 安全/身份验证/授权时,此功能才有效 - 自定义身份验证技术不会填写此条目。
  4. [27/Aug/2004:10:16:17 +0000] : the %t这是 Jetty APIRequest.getTimeStamp()这是在请求完成解析后、分派到处理程序或 Web 应用程序进行处理之前确定的。
  5. "GET /jetty/tut/XmlConfiguration.html HTTP/1.1" : the \"%r\"这是 HTTP 中使用的原始“请求行”。这是 HTTP 请求的第一行。 (或者request.getMethod() + request.getOriginalURI() + request.getProtocol())
  6. 200 : the %s这是从 Jetty 内部 API 获取的响应的已提交状态response.getCommittedMetadata().getStatus()(这个 API 存在是因为HttpServletResponse是可变的,并且许多 Web 应用程序倾向于在发送后对其进行修改,这意味着如果我们在此处使用标准 servlet API,我们会记录一个实际上未发送的值)
  7. 76793 : the %O这是作为来自 Jetty 内部 API 的响应的一部分在网络上发送的字节response.getHttpChannel().getBytesWritten()
  8. "http://localhost:8080/jetty/tut/logging.html" : the \"%{Referer}i\"这是请求Referer行(是的,它拼写错误,但是这里有古老的 HTTP 历史来解释为什么会出现这种情况)。它来自request.getHeader("Referer"),在许多情况下可以为空。
  9. "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8" : the \"%{User-Agent}i\"与上面相同,但是对于User-Agent请求标头。

您可以通过无数种方式自定义此输出,只需阅读CustomRequestLogapidoc 并创建您自己的格式,其中包含您想要的和/或您正在寻找的内容。

https://javadoc.io/doc/org.eclipse.jetty/jetty-server/latest/org.eclipse.jetty.server/org/eclipse/jetty/server/CustomRequestLog.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置 Jetty 10/11 请求日志 的相关文章

随机推荐