本文介紹了配置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請求日志的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,