Tomcat使用Log4j输出catalina.out日志

介绍

在使用Tomcat服务器时,通常需要对服务器的运行状态进行特定的记录,例如:访问日志、错误日志、调试日志等。而catalina.out则是Tomcat服务中的一种重要的日志文件,其中一般会记录Tomcat服务器的所有日志,包括控制台的输出信息、访问日志、错误日志等。在Tomcat服务器中,默认的日志实现是JUL(Java Util Logging),但是这个日志模块并不方便调试和管理。而另一款更加流行的日志实现方式Log4j,可以通过自身强大的功能极大地提高对Tomcat日志的管理和调试。

配置步骤

1.下载log4j的jar包文件,并将其放入Tomcat的lib目录中。

2.在Tomcat安装目录下的conf/log4j.properties文件中进行配置。配置这个文件,可以改变Tomcat日志文件的名称、大小、滚动策略、输出级别等等。关于这个配置文件的更详细信息,可以搜索Apache Log4j项目的官方文档。

以下是一个log4j.properties配置实例:

### Define loggers
# Verbose loggers for several Tomcat related components and subsystems
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[myapp]=DEBUG
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina]=DEBUG
log4j.logger.org.apache.catalina.core.StandardContext=DEBUG
log4j.logger.org.apache.catalina.loader.WebappClassLoader=DEBUG

### Define appenders
# Redirect stdout and stderr to the log file (Tomcat’s console output)
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

# Create a file appender for our catalina.instance.log
log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.out
log4j.appender.CATALINA.MaxFileSize=10MB
log4j.appender.CATALINA.MaxBackupIndex=4
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

### Root logger gets special handling, has its own Appender
log4j.rootLogger=INFO, CATALINA

3.修改Tomcat启动脚本中的配置,在CATALINA_OPTS配置中设置log4j的参数。CATALINA_OPTS用于传递通用的启动参数,因此可以将log4j的参数放入其中。

以下是修改后的启动脚本内容示例:

CATALINA_OPTS="-Dlog4j.configuration=file:/path/to/conf/log4j.properties"

示例1

以CentOS 7系统为例,下载Log4j的jar包:

wget https://logging.apache.org/log4j/1.2/download.html -O log4j-1.2.17.tar.gz
tar -zxvf log4j-1.2.17.tar.gz
cp log4j-1.2.17/log4j-1.2.17.jar /usr/local/tomcat/lib/

在Tomcat的conf目录下,新建log4j.properties文件:

### Define loggers
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[myapp]=DEBUG
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina]=DEBUG
log4j.logger.org.apache.catalina.core.StandardContext=DEBUG
log4j.logger.org.apache.catalina.loader.WebappClassLoader=DEBUG

### Define appenders
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.out
log4j.appender.CATALINA.MaxFileSize=10MB
log4j.appender.CATALINA.MaxBackupIndex=4
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

### Root logger gets special handling, has its own Appender
log4j.rootLogger=INFO, CATALINA

修改Tomcat的启动脚本,新增一行CATALINA_OPTS的配置:

vi /etc/profile.d/tomcat.sh
export CATALINA_OPTS='-Dlog4j.configuration=file:/opt/tomcat/conf/log4j.properties'

示例2

以Windows系统为例,下载Log4j的jar包:

1.打开Apache Log4j的下载链接 https://logging.apache.org/log4j/2.x/download.html。

2.在页面中,选择“Download Log4j 2”,会出现一个下载列表,选择“zip”格式的文件,点击下载。

3.解压下载包,将其中的log4j-core-.jar和log4j-api-.jar复制到Tomcat的lib目录下。

4.在Tomcat的conf目录下新建log4j2.xml文件,进行如下配置:

<?xml version=”1.0″ encoding=”UTF-8″?>
<Configuration status=”WARN”>
    <Appenders>
        <Console name=”Console” target=”SYSTEM_OUT”>
            <PatternLayout pattern=”%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n” />
        </Console>
        <File name=”MyFile” fileName=”${catalina.base}/logs/catalina.out”>
            <PatternLayout pattern=”%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n” />
        </File>
    </Appenders>
    <Loggers>
        <Logger name=”com.example.package.name” level=”debug” />
        <Root level=”info”>
            <AppenderRef ref=”Console” />
            <AppenderRef ref=”MyFile” />
        </Root>
    </Loggers>
</Configuration>

5.修改Tomcat的启动脚本,新增CATALINA_OPTS的配置:

set CATALINA_OPTS=-Dlog4j.configurationFile=file:/D:/apache-tomcat/logs/log4j2.xml

注意事项

在配置log4j时,需要注意以下几个问题:

1.日志文件位置: c 的默认位置是在 ${catalina.base}/logs 目录下,如果该目录不存在,则需要创建。如果配置log4j2,则建议将日志文件名设置为 catalina.log 或其他非catalina.out的名称,否则可能会有问题。

2.受保护的日志文件: Windows操作系统不允许使用某些特定的文件名进行重定向,例如 con,因此如果将日志的输出文件名设置为 con,可能会出现权限问题,需要注意。

3.不能输入中文: 不要再log4j.properties中写中文配置,因为log4j.properties是按照ISO-8859-1编码的,不支持中文。如果需要在配置文件中使用中文,可以使用log4j.xml并且指定编码为UTF-8。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Tomcat使用Log4j输出catalina.out日志 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • SpringBoot+slf4j实现全链路调用日志跟踪的方法(一)

    SpringBoot+slf4j实现全链路调用日志跟踪的方法(一) 在分布式系统中,日志跟踪是非常重要的,它可以帮助我们快速定位问题,提高系统的可维护性和可靠性。本文将详细讲解如何使用SpringBoot和slf4j实现全链路调用日志跟踪,包括以下内容: 日志跟踪的基本概念 SpringBoot中的日志跟踪实现方法 示例一:使用MDC实现日志跟踪 示例二:使…

    Java 2023年5月15日
    00
  • Java陷阱之assert关键字详解

    Java陷阱之assert关键字详解 引言 在Java程序开发中,assert关键字是一种非常有用的调试和测试工具。它能够帮助我们在程序运行时检查程序中的假设与约束是否被满足,从而及时发现程序中的bug。但是,assert关键字也存在着一些陷阱和误区,如果使用不当,就可能会导致程序出现各种意想不到的问题。本文将详细讲解Java中assert关键字的使用方法、…

    Java 2023年5月27日
    00
  • mybatis动态sql之Map参数的讲解

    Mybatis动态SQL之Map参数的讲解 在Mybatis的Mapper.xml文件中,我们可以使用动态SQL语句,来根据不同的参数值生成不同的SQL,这使得SQL编写更加具有灵活性。其中,Map类型的参数也可以用于动态SQL语句中,接下来将一一讲解这些内容。 1. Map参数的基本使用 我们可以在Mapper.xml中,使用Map类型的参数来实现条件查询…

    Java 2023年5月20日
    00
  • Java文件操作实例详解

    Java文件操作实例详解 一、文件操作的概述 文件操作是指程序通过对文件或文件夹的读、写、删除等操作实现对数据的存储,读取与处理。Java提供了丰富的IO库,可以实现大量的文件操作。本文将介绍Java文件操作的基本流程和常见用法。 二、文件操作的基本流程 Java对文件操作的流程主要包括以下步骤: 判断文件或文件夹是否存在; 创建文件或文件夹; 读取或写入文…

    Java 2023年5月20日
    00
  • Java中Arraylist的最大长度

    Java中ArrayList的最大长度 简介 ArrayList是Java中非常常用的数据结构,它是可变长度的数组。ArrayList最大长度由内存大小决定。当数组长度大于内存大小时,便会抛出OutOfMemoryError异常。 ArrayList的初始化长度 初始化ArrayList时可以指定其大小,如下所示: ArrayList<String&g…

    Java 2023年5月26日
    00
  • Java编程中最基础的文件和目录操作方法详解

    Java编程中最基础的文件和目录操作方法详解 在 Java 编程中,文件和目录操作是最基础的操作之一。Java 提供了丰富的类库,可以方便地完成文件和目录的读写、创建、修改、删除等操作。在本文中,我们将详细介绍 Java 编程中最基础的文件和目录操作方法,包括文件的读写、文件夹的创建、遍历、复制和删除等操作。 文件读写 读取文件内容 Java 中读取文件的方…

    Java 2023年6月1日
    00
  • SpringBoot 使用 Sa-Token 完成权限认证

    一、设计思路 所谓权限认证,核心逻辑就是判断一个账号是否拥有指定权限: 有,就让你通过。 没有?那么禁止访问! 深入到底层数据中,就是每个账号都会拥有一个权限码集合,框架来校验这个集合中是否包含指定的权限码。 例如:当前账号拥有权限码集合 [“user-add”, “user-delete”, “user-get”],这时候我来校验权限 “user-upda…

    Java 2023年4月25日
    00
  • 访问JSP文件或者Servlet文件时提示下载的解决方法

    当我们访问JSP文件或者Servlet文件时,有时会出现弹出下载文件的情况,而不是正常的页面展示。这一问题可能是由于Web服务器配置的问题所致。下面提供一些可能的解决方案。 1. 修改web.xml配置 我们可以在web.xml文件中添加以下配置,这会告诉Web服务器以HTML格式返回JSP和Servlet页面: <mime-mapping> &…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部