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

前言

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,一个简单的配置如下:

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等是不一样的,其级别如下:

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

测试类

测试类的代码如下:

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可以发现,里边也是配置了这个参数:

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

输出结果

控制台输出如下:

----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)

参考链接

原文地址:https://www.cnblogs.com/yulinlewis/p/10111340.html

时间: 2024-08-09 13:38:25

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

tomcat - 自带日志的区分

在tomcat 中,logs文件夹下会存放着一些tomcat自带的日志文件,其中有三种文件: 1 > localhost_access_log.2017-12-28 文件,它用来记录tomcat接受到的所有请求信息. 2 > localhost.2017-12-28 文件,它用来记录tomcat运行异常exception,但不包括项目中的异常. 3 > catalina.2017-12-28 文件,本博主认为是记录catalina.out被使用的信息.但不太确定,了解的朋友可以在下方留言

Tomcat 中的logs日志

简介:tomcat启动时自动在logs下产生日志:格式:文件名+日期+log: 1.认识各文件记录的信息 Catalina:主要记录tomcat启动时候的信息: Catalina.out:Linux下所有的错误日志和打印语句,都放在此文件中: host-manager.日期.log:放tomcat自带的日志信息 localhost.日期.log:类似第一.二种:但是记录的信息没他们全: localhost_access_log.日期.txt:存放tomcat请求的所有路径.时间.请求方式.返回码

Tomcat集群配置日志服务器

1 整体架构 2 中央日志服务器配置 2.1 配置时钟同步 2.1.1 方式一 中央日志服务器和Tomcat节点均向同一个时钟源(例如:pool.ntp.org)进行对时即可.说明:本小节下面命令均以root用户执行,并且在中央日志服务器和Tomcat节点均要执行. 首先,需要关闭ntpd服务: service ntpd stop chkconfig ntpd off 执行crontab -e,输入下面内容: */5 * * * * ntpdate pool.ntp.org 表示:每隔5分钟向时

Tomcat 监控及远程日志查看工具psi-probe

PSI Probe 是一个 Lambda Probe 的后续版本,主要是为了替换 Tomcat 自带的管理器,可方便的管理和监控 Tomcat 实例. 1,下载地址: https://code.google.com/p/psi-probe/downloads/list 2,使用方法: 下载后将文件解压放在tomcat目录的webapps下,将目录名称改为xxx-psi2-pb 修改tomcat下conf/tomcat-users.xml   配置访问权限 <user username="x

tomcat 6.x + log4j日志配置并按天(或大小)生成文件

tomcat日志,默认路径在${catalina.home}/logs目录下,默认使用的是tomcat自己封装的logging工具类,默认配置文件使用的${catalina.home}/conf/logging.properties 默认的配置不满足按天或按大小将日志区分,用以备份或转移或删除,经常会出现日志文件超大,磁盘空间不够的情况(就算磁盘够,一段时间后的日志也应该及时清理和压缩起来). 考虑到这种需求,使用log4j的配置,将tomcat的logging拦截起来,配置如下: 采用log4

tomcat 使用log4j进行日志切割

因为tomcat catalina.out日志不会自己主动切割, 一.日志切割所需包在附近中 1. 压缩包中有三个jar包: log4j-1.2.16.jar tomcat-juli-adapters.jar tomcat-juli.jar 说明:假设不是tomcat7版本号,请去官网下载相应版本号的tomcat-juli.jar,tomcat-juli-adapters.jar类包. 下载地址:http://www.apache.org/dist/tomcat  在相应版本号中的bin/ext

Tomcat自带log的配置详解

最近几天被日志搞得烦死了,不详细了解不行呀! Tomcat根目录文件作用说明 根目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹 bin目录 主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令). 重要:很多环境变量的设置都在此处,例如可以设置JDK路径.TOMCAT路径 startup 用来启动tomcat shutdown 用来关闭tomcat catalina.sh可

Tomcat 的 catalina.out 日志分割

一.背景 Tomcat 的 catalina.out 日志量不断增加,占用空间较大,且默认是不滚动的.因此,需要对其进行日志分割,并进行清理. 本文选用 Cronolog 对其进行分割. 二.安装 1.下载 地址:http://cronolog.org/download/cronolog-1.6.2.tar.gz 2.安装 # tar zxvf cronolog-1.6.2.tar.gz # cd cronolog-1.6.2 # ./configure # make # make instal

IDEA中部署的项目添加Tomcat自带的一些项目

在IDEA部署项目的时候发现没有tomcat自带的一些项目,有时候我们需要tomcat自带的项目查看一些配置的信息,经过查阅资料后做记录如下: 1.在Eclipse中点击Run ->Edit Configurations配置Tomcat 选中Tomcat安装目录下的webapps目录: 选中之后 2.到Tomcat安装目录下的conf下配置tomcat-users.xml <role rolename="tomcat"/> <role rolename=&quo