20201029 Tomcat中的几种日志

Tomcat主要由connector连接器和容器组成 ,有四大容器(engine 、host、context、wrapper)。

1,Engine 引擎, 启动一个tomcat服务,也就是启动一个引擎

2,host 虚拟主机, 一个Engine启动,下面项目都会启动,localhost:8080/work1,work2

3,context 上下文, 一个项目对应一个上下文,通过map映射到不同的servlet。

4,wrapper 包装器, 一个wrapper对应一个servlet。

 

1, catalina.out即标准输出和标准出错,所有输出到这两个位置的都会进入catalina.out,这里包含tomcat运行自己输出的日志以及应用里向console输出的日志。(向控制台输出的日志,全部都打印到catalina.out里面了)

2, localhost.{yyyy-MM-dd}.log主要是应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志,而这些未处理异常最终会导致应用无法启动。(启动失败的日志)

不同的日志文件里的内容也不尽相同,查问题也要看不同的日志文件,如果没找到文件,甚至都无法了解真正的问题是什么。

 

1, catalina.log 是tomcat自己运行的一些日志。catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr)

2, localhost.{yyyy-MM-dd}.log主要是应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志.(应用初始化,Tomcat启动失败,日志可能在这里

 

在tomcat中有一个server.xml的配置文件,其中有这么一个片段:

<Engine name="Catalina" defaultHost="localhost">

    <Host name="localhost" appBase="webapps"unpackWARs="false" autoDeploy="false">

    </Host>

</Engine>

Tomcat作为通用容器本身,可能考虑到Engine下有多个Host,每个Host的日志还是要输出到不同的文件。而实际中我们往往是单容器,单Host,甚至是只有一个ROOT的Context。

 

一个Tomcat进程对应着一个Engine,一个Engine下可以有多个Host(Virtual Host),一个Host里可以有多个Context,比如我们常常将应用部署在ROOT下还是webapps里其他目录,这个就是Context。

 

其中Engine对应着tomcat里的StandardEngine类,Host对应着StandardHost类,而Context对应着StandardContext。这几个类都是从ContainerBase派生。这些类里打的一些跟应用代码相关的日志都是使用ContainerBase里的getLogger,而这个logger的logger name就是: org.apache.catalina.core.ContainerBase.[current container name].[current container name]...

 

一个webapp里listener, filter, servlet的初始化就是在StandardContext里进行的,比如ROOT里有一个listener初始化出异常了,打印日志则logger name是org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]。这其中Catalina和localhost是上面xml片段里的Engine和Host的name,而[/]是ROOT对应的StandardContext的name。所以listener, filter, servlet初始化时的日志是需要看localhost.{yyyy-MM-dd}.log这个日志的。

 

比如现在我们使用Spring,Spring的初始化我们往往是使用Spring提供的一个listener进行的,而如果Spring初始化时因为某个bean初始化失败,导致整个应用没有启动,这个时候的异常日志是输出到localhost中的,而不是cataina.out中。所以有的时候我们应用无法启动了,然后找catalina.out日志,但最后也没有定位根本原因是什么,就是因为我们找的日志不对。但有的时候catalina.out里也有我们想要的日志,那是因为我们的应用或使用的一些组件自己捕获了异常,然后将其打印了,这个时候如果恰好这些日志被我们配置成输出到console,则这些日志也会在catalina.out里出现了。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值