Configuring Jetty 10/11 Request Logs(配置Jetty 10/11请求日志)
问题描述
我正在查看帖子jetty logging,试图弄清楚打印的每个属性的含义
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"; &q;mozilla/5(X11;U;Linux i686;EN-US;RV:1.6)Gecko/20040614火狐/0.8&q;
我知道一些问题的答案,但仍然找不到下面提到的一些问题的答案。
- 123.4.5.6:request.getRemoteAddr()
- 破折号(-):无法计算
- 破折号(-):无法计算
- [27/Aug/2004:10:16:17+0000]:时间戳
- get:request.getMethod()
- jetty/tut/XmlConfiguration.html:request.getRequestURI()
- HTTP/1.1:request.getProtocol()
- 200:response.getStatus()
- 76793:response.getHttpChannel().getBytesWritten()
- http://localhost:8080/jetty/tut/logging.html:无法计算
- Mozilla/5.0(X11;U;Linuxi686;EN-US;RV:1.6)Gecko/20040614 Firefox/0.8:request.getHeader(";User-Agent";)
如果我在其他属性上也是错误的,请纠正我。
推荐答案
最新版本的Jetty日志请求,格式为CustomRequestLog
。
它有两种默认的输出格式(以及其他几种格式并能够自定义格式)
(&q;NCSA&QOOT;FORMAT-QUOT;NCSA&QOOT;FORMAT)NCSA_FORMAT
-"%{client}a - %u %t "%r" %s %O"
的语法声明EXTENDED_NCSA_FORMAT
-NCSA_FORMAT
+" "%{Referer}i" "%{User-Agent}i""
的语法
因此,根据CustomRequestLog
上的文档,这意味着以下输出.
123.4.5.6--[27/08/2004:10:16:17+000]";GET/jetty/tut/XmlConfiguration.html HTTP/1.1200 76793";http://localhost:8080/jetty/tut/logging.html";/5.0(X11;U;Linuxi686;EN-US;RV:1.6)GECKO/20040614火狐/0.8RV;
实际上是扩展的NCSA格式之一。
这样分解.
123.4.5.6
:%{client}a
,即request.getRemoteHost()
-
:在Jetty中,硬编码字符串-
条目应该是远程日志名称user";,但是由于Jetty不支持identd,我们没有办法填写此值(identd是一种老式技术,从未在http中得到广泛采用)-
:%u
是经过身份验证的用户名,来自Jetty内部API(例如:Request.getAuthentication()
或Authentication.getUserIdentity()
)-只有当您的web应用使用Servlet安全/身份验证/授权时才有效-自定义身份验证技术不会填写此条目。[27/Aug/2004:10:16:17 +0000]
:%t
,%t
是Jetty APIRequest.getTimeStamp()
,在请求解析完成后,调度到处理程序或webapp进行处理之前设置。"GET /jetty/tut/XmlConfiguration.html HTTP/1.1"
:"%r"
,即HTTP中使用的原始";请求行";。它是HTTP请求的第一行。(或request.getMethod()
+request.getOriginalURI()
+request.getProtocol()
)200
:%s
,即Jetty内部接口response.getCommittedMetadata().getStatus()
返回时提交的状态(该接口之所以存在,是因为HttpServletResponse
是可变的,很多webapp都会在发送后进行修改,这意味着如果我们在这里使用标准的servlet接口,我们会记录一个实际没有发送的值)76793
:%O
,作为Jetty内部接口响应的一部分在网络上发送的字节数response.getHttpChannel().getBytesWritten()
"http://localhost:8080/jetty/tut/logging.html"
:"%{Referer}i"
,即请求Referer
行(是的,它拼写错误,但这里有古老的HTTP历史记录说明原因)。来自request.getHeader("Referer")
,很多情况下可以为空。"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8"
:"%{User-Agent}i"
同上,只是User-Agent
请求头不同。
您可以通过多种方式自定义此输出,只需阅读CustomRequestLog
apidoc并创建您自己的格式即可,该格式包含您需要的内容和/或您要查找的内容。
https://javadoc.io/doc/org.eclipse.jetty/jetty-server/latest/org.eclipse.jetty.server/org/eclipse/jetty/server/CustomRequestLog.html
这篇关于配置Jetty 10/11请求日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:配置Jetty 10/11请求日志
基础教程推荐
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01