Spring Boot本身附带一个嵌入式Tomcat服务器,非常方便。但是在默认情况下是无法看到Tomcat的日志。

在本文中,将介绍如何通过配置Spring Boot来显示Tomcat的内部日志和访问日志。

Tomcat日志类型

嵌入式Tomcat存储两种类型的日志:

  • 访问日志 Access Log
  • 内部服务器日志

访问日志保存应用程序处理的所有请求的记录。这些日志可用于跟踪页面命中计数和用户会话活动等内容。而内部服务器日志将帮助我们解决运行中的应用程序的任何问题。

访问日志

默认情况下,是未启用访问日志的。我们可以通过向application.properties添加属性来轻松启用它们:

server.tomcat.accesslog.enabled=true

同样,也可以使用VM参数来启用访问日志:

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

这些日志文件将在临时目录中创建。 例如,在Windows上,访问日志的目录将类似于AppDataLocalTemp omcat.2142886552084850151.40123logs

日志格式

默认访问日志的格式如下:

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

它的含义是:

%h - 发送请求的客户端IP;
%l - 用户的身份;
%u - 由HTTP身份验证确定的用户名;
%t - 收到请求的时间;
%r - 来自客户端的请求URL;
%> s - 从服务器发送到客户端的状态代码,如  200;
%b -客户端响应的大小,或者这些请求的响应大小;

由于请求是没有经过身份验证的用户,因此%l和%u打印了破折号。

实际上,如果缺少任何信息,Tomcat将为该插槽打印一个破折号

自定义访问日志

我们可以通过在application.properties中添加一些属性来覆盖默认的Spring Boot配置。

首先,要更改默认日志文件名:

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

服务器内部日志

Tomcat服务器的内部日志非常有助于解决任何服务器端问题。

要查看这些日志,我们必须在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

Spring Boot内嵌的tomcat日志相关推荐

  1. Netweaver的端口号和Spring boot内嵌的Tomcat端口

    Netweaver FM : TH_GET_VIRT_HOST_DATA Spring Boot Spring Boot will launch an embedded Tomcat instance ...

  2. Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现

    Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响.所以,优雅停机非常有必 ...

  3. spring boot内嵌tomcat优雅的开启apr模式

    文章目录 简介 Win下开启APR Linux下开启APR 把lib打进jar包 简介 环境: jdk8.spring boot 2.3.4.RELEASE.centOS7.3.win7 在sprin ...

  4. Spring Boot 容器选择 Undertow 而不是 Tomcat Spring Boot 内嵌容器Unde

    Spring Boot 内嵌容器Undertow参数设置 配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动 ...

  5. Spring Boot 内嵌Tomcat的端口号的修改

    操作非常的简单,不过如果从来没有操作过,也是需要查找一下资料的,所以,在此我简单的记录一下自己的操作步骤以备后用! 1:我的Eclipse版本,不同的开发工具可能有所差异,不过大同小异 2:如何进入对 ...

  6. Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题

    问题记录 问题场景:修改头像业务,文件上传 代码 // 上传的文件.../upload/文件.png//在javaWeb中我们会用HttpServletRequest来获取上下文路径,当然sessio ...

  7. 修改Spring boot内置的tomcat端口

    介绍两种种简单的修改spring boot内置端口的方法: 第一种:在入口直接设置端口,代码如下所示: public static void main(String[] args){SpringApp ...

  8. 总在说 Spring Boot 内置了 Tomcat 启动,那它的原理你说的清楚吗?

    前言 不得不说SpringBoot的开发者是在为大众程序猿谋福利,把大家都惯成了懒汉,xml不配置了,连tomcat也懒的配置了,典型的一键启动系统,那么tomcat在springboot是怎么启动的 ...

  9. Spring Boot 内嵌容器Undertow参数设置

    配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动项目会报错:打开文件数过多server.undertow. ...

  10. spring boot实战(第七篇)内嵌容器tomcat配置

    spring boot默认web程序启用tomcat内嵌容器tomcat,监听8080端口,servletPath默认为 / 通过需要用到的就是端口.上下文路径的修改,在spring boot中其修改 ...

最新文章

  1. 网络流最大流 Dinic算法模板
  2. python 笛卡尔积,排列,组合
  3. Adobe Flash Player 10.0.32.18
  4. Java嵌套构造函数造成的stack overflow异常
  5. java asm tree_使用ASM 4处理Java类文件–第二部分:Tree API
  6. mysql触发器区分新增 修改_MySQL触发器 , 判断更新操作前后数据是否改变
  7. hdu1161 欧拉路
  8. “寓教于乐”,DeepMind新研究让机器人从0开始学习复杂精细动作
  9. python-unicode十进制数字转中文
  10. java编程对电脑配置_java编程对电脑配置有什么要求?如何选择合适电脑?
  11. CentOS7下载安装JDK1.8
  12. Porsche保时捷Taycan维修手册电路图接线图技术培训手册维修技术资料
  13. Unity Shader (二)
  14. 代码坏的味道21:被拒绝的遗赠 (Refused Bequest)
  15. WEB安全之:Mysql 数据库 SQL 注入(三)
  16. STC12C5A60S2独立PWM
  17. python嵌入java,java架构如何嵌入python?Java调用Python程序方法
  18. Jenkins基础:获取Jenkins-Crumb的错误信息与对应方法
  19. Android中基于心知天气API获取天气信息
  20. Eclipse Maven 依赖包找不到源代码及javadoc

热门文章

  1. 利用python批量下载起点中文网的小说
  2. DisplayTag用法
  3. 交通流理论 第一章 绪论
  4. 买硬盘如何避免买到二手翻新的硬盘,ICMAX教你分辨翻新硬盘
  5. 关闭Windows10 易升
  6. EasiCSDeep:利用表面肌电信号识别颈椎病的深度学习模型
  7. 计算机控制的行业规模,2019年中国DCS控制系统行业市场现状及竞争格局分析,内资“两家独大”「图」...
  8. GIS离线地图的下载与发布
  9. php导出指定格式excel,php导出excel格式文件的例子
  10. 软件逆向工程的前世今生