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日

相关文章

  • 【redis】哨兵监控原理

    redis-主从模式弊端: 一、master节点异常shutdown后,从机原地待命,从机数据可以查询(不可以写入),等待主机重启归来 二、复制延时,信号衰减 redis-哨兵监控:     是什么?       哨兵即为吹哨人,可以巡查监控后台master主机是否故障,如果故障可以根据投票数自动将一个从库转换为新的master,继续提供写入服务。     …

    Java 2023年5月10日
    00
  • Java CAS底层实现原理实例详解

    Java CAS底层实现原理实例详解 什么是CAS CAS是Compare And Swap(比较并交换)的缩写。它是一种并发操作,常用于多线程环境下。CAS操作包含3个操作数——内存位置(V)、预期原值(A)和新值(B)。操作仅在当前内存值等于预期原值时,将内存值修改为所需的新值。CAS是原子操作,保证了操作的原子性。 实现CAS需要硬件的支持。Java中…

    Java 2023年5月18日
    00
  • Sprint Boot @Size使用方法详解

    @Size是Spring Boot中的一个注解,用于标记一个字段或方法参数的长度必须在指定范围内。在本文中,我们将详细介绍@Size注解的作用和使用方法,并提供两个示例。 @Size注解的作用 @Size注解用于标记一个字段或方法参数的长度必须在指定范围内。当使用@Size注解标记一个字段或方法参数时,如果该字段或方法参数的长度不在指定范围内,则会抛出jav…

    Java 2023年5月5日
    00
  • Spring Boot 动态数据源示例(多数据源自动切换)

    下面我将详细讲解 Spring Boot 动态数据源示例(多数据源自动切换)的完整攻略。 什么是动态数据源 动态数据源是一种可以在程序运行时自动切换数据源的技术,它可以在不重启应用的情况下帮助我们实现多数据源的自动切换,非常便于开发和维护。在实践中,我们可以使用 Spring Boot 官方提供的 AbstractRoutingDataSource 类来实现…

    Java 2023年5月20日
    00
  • Filter、Servlet、Listener的学习_动力节点Java学院整理

    Filter、Servlet、Listener的学习攻略 一、什么是Filter Filter又称过滤器,是Java Web中一种很重要的组件。Filter的主要作用是在 Servlet容器的请求与资源(例如 Servlet、JSP等)之间加一个拦截器,对请求进行预处理,也可以对响应做出后处理。 Filter是Servlet API中最实用的技术之一,它非常…

    Java 2023年6月15日
    00
  • Spring Security OAuth2实现使用JWT的示例代码

    下面就为大家详细讲解一下Spring Security OAuth2实现使用JWT的示例代码的完整攻略,过程中会包含两条示例。 背景介绍 在微服务和云计算的时代,OAuth2成为了认证和授权的标准协议。Spring Security是一个基于Spring的安全框架,允许您在应用中实现安全控制。而JWT(JSON Web Token)是一种基于JSON的标准,…

    Java 2023年5月20日
    00
  • Java实现获取cpu、内存、硬盘、网络等信息的方法示例

    下面我来详细讲解一下“Java实现获取CPU、内存、硬盘、网络等信息的方法示例”的完整攻略。 获取CPU信息 Java可以通过ManagementFactory类获取系统的各种信息,包括CPU的使用情况。下面是获取CPU的使用率的方法示例: import java.lang.management.ManagementFactory; import com.s…

    Java 2023年5月24日
    00
  • 创建一个Java的不可变对象

    创建一个Java的不可变对象,需要经过以下步骤: 1. 声明类为final 为了防止子类继承和重写类中的方法,将类声明为final。 2. 声明所有的属性为私有的final类型 使用final类型声明属性,并且将其设为私有属性,这样无法修改。 public final class ImmutableObject { private final int age…

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