tomcat(四) 日志

日志配置文件

  • 配置文件的路径 /dir{base}/conf/logging.properties
#可配置项(5类日志):catalina、localhost、manager、admin、host-manager

handlers = catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
#配置tomcat的日志输出方式,这里表示文件输出和控制台输出

catalina.org.apache.juli.FileHandler.level = FINE
#设置 catalina 日志的级别为: FINE
#日志级别:
#SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

catalina.org.apache.juli.FileHandler.level = OFF
#禁用 catalina 日志的输出

catalina.org.apache.juli.FileHandler.level = ALL  
#输出 catalina 所有的日志消息均输出

catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
#日志输出目录,此设置表示tomcat日志输出到tomcat\logs目录下
 
catalina.org.apache.juli.FileHandler.prefix = catalina. 
#日志输出前缀,后面跟日期信息(yyyy-MM-dd)

java.util.logging.ConsoleHandler.level = FINE
#配置文件使控制台日志输出级别为FINE

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
#控制台日志输出格式 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
#localhost日志文件输出级别为INFO

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
#localhost日志文件输出处理类2localhost.org.apache.juli.FileHandler

catalina日志

日志来源

  • tomcat的自身系统的输出
    catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),这是在tomcat的启动脚本里指定的,如果没有修改的话stdout和stderr会重定向到此日志。
  • 应用的system.out输出
    所以我们在应用里使用System.out打印的东西都会到这里来。
  • 框架日志的输出
    如果我们在应用里使用其他的日志框架,配置了向Console输出的,则也会在这里出现。比如以logback为例,如果配置ch.qos.logback.core.ConsoleAppender则会输出到catalina.out里

cataliana.{yyyy-MM-dd}.log和localhost.{yyyy-MM-dd}.log

localhost的日志为tomcat中部署的应用抛出的日志,而cataliana的日志为tomcat本身运行的日志。
在日志配置文件中的org.apache.catalina.core.ContainerBase.[Catalina].[localhost](org.apache.catalina.core.ContainerBase.[current container name].[current container name],logname的日志配置字段)代表着日志的都会输出到localhost.{yyyy-MM-dd}.log文件,而其中的catalina代表着tomcat中的engine组件,localhost对应着host组件。
而我们一个webapp里listener, filter, servlet的初始化就是在StandardContext里进行的,比如ROOT里有一个listener初始化出异常了,打印日志则logger name是org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]。而[/]是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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值