本文介紹了配置Jetty 10/11請(qǐng)求日志的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我正在查看帖子jetty logging,試圖弄清楚打印的每個(gè)屬性的含義
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;
我知道一些問(wèn)題的答案,但仍然找不到下面提到的一些問(wèn)題的答案。
-
123.4.5.6:request.getRemoteAddr()
破折號(hào)(-):無(wú)法計(jì)算
破折號(hào)(-):無(wú)法計(jì)算
[27/Aug/2004:10:16:17+0000]:時(shí)間戳
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:無(wú)法計(jì)算
Mozilla/5.0(X11;U;Linuxi686;EN-US;RV:1.6)Gecko/20040614 Firefox/0.8:request.getHeader(";User-Agent";)
如果我在其他屬性上也是錯(cuò)誤的,請(qǐng)糾正我。
推薦答案
最新版本的Jetty日志請(qǐng)求,格式為CustomRequestLog。
它有兩種默認(rèn)的輸出格式(以及其他幾種格式并能夠自定義格式)
(&q;NCSA&QOOT;FORMAT-QUOT;NCSA&QOOT;FORMAT)
NCSA_FORMAT–"%{client}a - %u %t "%r" %s %O"的語(yǔ)法聲明EXTENDED_NCSA_FORMAT–NCSA_FORMAT+" "%{Referer}i" "%{User-Agent}i""的語(yǔ)法
因此,根據(jù)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;
實(shí)際上是擴(kuò)展的NCSA格式之一。
這樣分解.
123.4.5.6:%{client}a,即request.getRemoteHost()-:在Jetty中,硬編碼字符串-條目應(yīng)該是遠(yuǎn)程日志名稱user";,但是由于Jetty不支持identd,我們沒(méi)有辦法填寫此值(identd是一種老式技術(shù),從未在http中得到廣泛采用)-:%u是經(jīng)過(guò)身份驗(yàn)證的用戶名,來(lái)自Jetty內(nèi)部API(例如:Request.getAuthentication()或Authentication.getUserIdentity())-只有當(dāng)您的web應(yīng)用使用Servlet安全/身份驗(yàn)證/授權(quán)時(shí)才有效-自定義身份驗(yàn)證技術(shù)不會(huì)填寫此條目。[27/Aug/2004:10:16:17 +0000]:%t,%t是Jetty APIRequest.getTimeStamp(),在請(qǐng)求解析完成后,調(diào)度到處理程序或webapp進(jìn)行處理之前設(shè)置。"GET /jetty/tut/XmlConfiguration.html HTTP/1.1":"%r",即HTTP中使用的原始";請(qǐng)求行";。它是HTTP請(qǐng)求的第一行。(或request.getMethod()+request.getOriginalURI()+request.getProtocol())200:%s,即Jetty內(nèi)部接口response.getCommittedMetadata().getStatus()返回時(shí)提交的狀態(tài)(該接口之所以存在,是因?yàn)?code>HttpServletResponse是可變的,很多webapp都會(huì)在發(fā)送后進(jìn)行修改,這意味著如果我們?cè)谶@里使用標(biāo)準(zhǔn)的servlet接口,我們會(huì)記錄一個(gè)實(shí)際沒(méi)有發(fā)送的值)76793:%O,作為Jetty內(nèi)部接口響應(yīng)的一部分在網(wǎng)絡(luò)上發(fā)送的字節(jié)數(shù)response.getHttpChannel().getBytesWritten()"http://localhost:8080/jetty/tut/logging.html":"%{Referer}i",即請(qǐng)求Referer行(是的,它拼寫錯(cuò)誤,但這里有古老的HTTP歷史記錄說(shuō)明原因)。來(lái)自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請(qǐng)求頭不同。
您可以通過(guò)多種方式自定義此輸出,只需閱讀CustomRequestLogapidoc并創(chuàng)建您自己的格式即可,該格式包含您需要的內(nèi)容和/或您要查找的內(nèi)容。
https://javadoc.io/doc/org.eclipse.jetty/jetty-server/latest/org.eclipse.jetty.server/org/eclipse/jetty/server/CustomRequestLog.html
這篇關(guān)于配置Jetty 10/11請(qǐng)求日志的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,






