Spring Boot內(nèi)嵌的tomcat日志

Spring Boot本身附帶一個(gè)嵌入式Tomcat服務(wù)器,非常方便。但是在默認(rèn)情況下是無法看到Tomcat的日志。

在本文中,將介紹如何通過配置Spring Boot來顯示Tomcat的內(nèi)部日志和訪問日志。

Tomcat日志類型

嵌入式Tomcat存儲兩種類型的日志:

  • 訪問日志 Access Log
  • 內(nèi)部服務(wù)器日志

訪問日志保存應(yīng)用程序處理的所有請求的記錄。這些日志可用于跟蹤頁面命中計(jì)數(shù)和用戶會話活動等內(nèi)容。而內(nèi)部服務(wù)器日志將幫助我們解決運(yùn)行中的應(yīng)用程序的任何問題。

訪問日志

默認(rèn)情況下,是未啟用訪問日志的。我們可以通過向application.properties添加屬性來輕松啟用它們:

server.tomcat.accesslog.enabled=true

同樣,也可以使用VM參數(shù)來啟用訪問日志:

java -jar -Dserver.tomcat.basedir=tomcat -Dserver.tomcat.accesslog.enabled=true app.jar

這些日志文件將在臨時(shí)目錄中創(chuàng)建。 例如,在Windows上,訪問日志的目錄將類似于AppData\Local\Temp\tomcat.2142886552084850151.40123\logs

日志格式

默認(rèn)訪問日志的格式如下:

%h %l %u %t \"%r\" %>s %b

它的含義是:

%h - 發(fā)送請求的客戶端IP;  
%l - 用戶的身份;
%u - 由HTTP身份驗(yàn)證確定的用戶名;
%t - 收到請求的時(shí)間;
%r - 來自客戶端的請求URL;
%> s - 從服務(wù)器發(fā)送到客戶端的狀態(tài)代碼,如  200;
%b -客戶端響應(yīng)的大小,或者這些請求的響應(yīng)大小;

由于請求是沒有經(jīng)過身份驗(yàn)證的用戶,因此%l和%u打印了破折號。

實(shí)際上,如果缺少任何信息,Tomcat將為該插槽打印一個(gè)破折號

自定義訪問日志

我們可以通過在application.properties中添加一些屬性來覆蓋默認(rèn)的Spring Boot配置。

首先,要更改默認(rèn)日志文件名:

server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd

另外,我們可以更改日志文件的位置:

server.tomcat.basedir=tomcat
server.tomcat.accesslog.directory=logs

最后,我們可以覆蓋日志文件中寫入日志的方式:

server.tomcat.accesslog.pattern=common

服務(wù)器內(nèi)部日志

Tomcat服務(wù)器的內(nèi)部日志非常有助于解決任何服務(wù)器端問題。

要查看這些日志,我們必須在application.properties中添加以下日志記錄配置:

logging.level.org.apache.tomcat=DEBUG
logging.level.org.apache.catalina=DEBUG

然后我們會看到類似的東西:

2019-05-17 15:41:07.261 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch  : Counting up[http-nio-40124-Acceptor-0] latch=1
2019-05-17 15:41:07.262 DEBUG 31160 --- [0124-Acceptor-0] o.apache.tomcat.util.threads.LimitLatch  : Counting up[http-nio-40124-Acceptor-0] latch=2
2019-05-17 15:41:07.278 DEBUG 31160 --- [io-40124-exec-1] org.apache.tomcat.util.modeler.Registry  : Managed= Tomcat:type=RequestProcessor,worker="http-nio-40124",name=HttpRequest1
...
2019-05-17 15:41:07.279 DEBUG 31160 --- [io-40124-exec-1] m.m.MbeansDescriptorsIntrospectionSource : Introspected attribute virtualHost public java.lang.String org.apache.coyote.RequestInfo.getVirtualHost() null
...
2019-05-17 15:41:07.280 DEBUG 31160 --- [io-40124-exec-1] o.a.tomcat.util.modeler.BaseModelMBean   : preRegister org.apache.coyote.RequestInfo@1e6f89ad Tomcat:type=RequestProcessor,worker="http-nio-40124",name=HttpRequest1
2019-05-17 15:41:07.292 DEBUG 31160 --- [io-40124-exec-1] org.apache.tomcat.util.http.Parameters   : Set query string encoding to UTF-8
2019-05-17 15:41:07.294 DEBUG 31160 --- [io-40124-exec-1] o.a.t.util.http.Rfc6265CookieProcessor   : Cookies: Parsing b[]: jenkins-timestamper-offset=-19800000
2019-05-17 15:41:07.296 DEBUG 31160 --- [io-40124-exec-1] o.a.c.authenticator.AuthenticatorBase    : Security checking request GET /greetings/Harry
2019-05-17 15:41:07.296 DEBUG 31160 --- [io-40124-exec-1] org.apache.catalina.realm.RealmBase      :   No applicable constraints defined
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容