前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Tomcat自带的日志实现tomcat-juli.jar

如何使用Tomcat自带的日志实现tomcat-juli.jar

作者头像
雨临Lewis
发布2022-01-11 14:09:53
7900
发布2022-01-11 14:09:53
举报
文章被收录于专栏:雨临Lewis的博客

前言

Tomcat自带的日志实现是tomcat-juli.jar,它是对默认的JDK日志java.util.logging进行一定的封装,和标准JDK日志支持相同的配置,但是和log4j等常用的日志框架比起来功能要较为简陋。但是tomcat-juli可以针对不同的classloader来使用不同的配置文件,使得tomcat下不同的Web应用程序可以使用各自独立的日志文件。

如果我们想在代码中使用Tomcat自带的日志实现,也很简单,首先拿到tomcat-juli.jar。该jar包存在于Tomcat安装目录下的lib下,或者你可以直接在Maven仓库里选择你想要的版本去下载。

接着新建一个java项目,导入该jar包,然后在根目录下新建一个配置文件logging.properties

配置文件logging.properties

tomcat-juli使用的配置文件是logging.properties,一个简单的配置如下:

1 2 3 4 5 6

handlers= java.util.logging.ConsoleHandler .level= INFO java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter com.lewis.test.TestLewis.level = SEVERE

这里简单解释下,第一行表示使用ConsoleHandler来处理打印日志,用来将信息打印到控制台。 第二行表示输出的日志级别是INFO,可以在level前加上任意类名或者完整的包名,用于精准控制类/包的日志级别,譬如第三行。 第四行表示输出的日志信息日期格式。

更多具体的配置可以去看看Tomcat的conf目录下的logging.properties,里边有很多配置和注释。

另外提一下,tomcat-juli的日志级别和log4j等是不一样的,其级别如下:

1

SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

测试类

测试类的代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

package com.lewis.test; import java.io.NotSerializableException; import java.util.logging.Level; import java.util.logging.Logger; public class TestLewis { private static Logger LOGGER; static { System.setProperty("java.util.logging.config.file", "D:\\lewis\\workspace\\test\\src\\main\\resources\\logging.properties"); //must initialize loggers after setting above property LOGGER = Logger.getLogger(TestLewis.class.getName()); } public static void main(final String[] args) { System.out.println("----System.out----"); System.err.println("----System.err----"); LOGGER.info("an info msg"); LOGGER.warning("a warning msg"); LOGGER.severe("a severe msg"); LOGGER.log(Level.INFO, "test1: a info msg", new NotSerializableException()); LOGGER.log(Level.WARNING, "test1: a warning msg", new NotSerializableException()); LOGGER.log(Level.SEVERE, "test1: a severe msg", new NotSerializableException()); }

这里需要注意的是,tomcat-juli的打印语句也是不太一样的,如果需要打印出具体的堆栈信息就必须自己指定日志级别,如果使用自带的日志级别打印语句诸如.info()等,只能打印出字符串,不能打印出堆栈信息。

还有就是必须在代码的一开始就指定加载配置文件,通过System.setProperty("java.util.logging.config.file", "配置文件的路径");。如果没有这一步,你会发现你的配置文件根本没有效果。如果你去Tomcat的bin目录下的catalina.bat可以发现,里边也是配置了这个参数:

1

set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

输出结果

控制台输出如下:

1 2 3 4 5 6 7 8

----System.out---- ----System.err---- Dec 07, 2018 5:56:04 PM com.lewis.test.TestLewis main SEVERE: a severe msg Dec 07, 2018 5:56:05 PM com.lewis.test.TestLewis main SEVERE: test1: a severe msg java.io.NotSerializableException at com.lewis.test.TestLewis.main(TestLewis.java:75)

参考链接

警告

本文最后更新于 December 12, 2018,文中内容可能已过时,请谨慎使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-122,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 配置文件logging.properties
  • 测试类
  • 输出结果
  • 参考链接
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档