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日

相关文章

  • spring boot之使用spring data jpa的自定义sql方式

    下面是关于“spring boot之使用spring data jpa的自定义sql方式”的完整攻略: 1. 什么是Spring Data JPA? Spring Data JPA是Spring提供的对JPA规范的实现,它简化了Java应用程序与JPA之间的集成,使得我们可以更加方便的使用JPA进行数据访问。Spring Data JPA提供了许多便利的AP…

    Java 2023年6月2日
    00
  • FP-growth算法发现频繁项集——发现频繁项集

    FP-growth算法发现频繁项集——发现频繁项集 什么是频繁项集? 在数据挖掘中,频繁项集(Frequent Itemset)指在一个数据集中经常出现在一起的项的集合,常用于关联规则挖掘。例如,在超市的交易记录中,若苹果和香蕉经常一起被购买,则{苹果,香蕉}是一个频繁项集。 什么是FP-growth算法? FP-growth算法是一种用于挖掘数据中的频繁项…

    Java 2023年5月19日
    00
  • 使用maven shade插件解决项目版本冲突详解

    使用Maven Shade插件可以将所有的依赖包、类库和所需的资源打包到一个可执行的Jar文件中,从而避免在运行时出现项目版本冲突的问题。以下是使用Maven Shade插件解决项目版本冲突的完整攻略: 环境要求 JDK 1.8+ Maven 3.x+ 使用Maven Shade插件 在pom.xml文件中添加以下配置: <build> <…

    Java 2023年5月20日
    00
  • Java中基于maven实现zxing二维码功能

    下面我将提供一个完整的攻略,教你如何在Java中基于maven实现zxing二维码功能。 1. 环境准备 首先需要安装Maven,同时在pom.xml中添加以下依赖: <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</ar…

    Java 2023年5月20日
    00
  • Java文件管理操作的知识点整理

    下面是“Java文件管理操作的知识点整理”的完整攻略。 什么是Java文件管理操作 Java文件管理操作是指在Java程序中对文件进行创建、读取、写入、删除等文件操作的过程。通过Java文件管理操作,我们可以对文件进行增删改查、复制和移动等常见文件操作,便于我们在Java程序中处理文件相关业务逻辑。 Java文件管理操作的基本流程 Java文件管理操作的基本…

    Java 2023年5月20日
    00
  • Java Apache POI报错“POIXMLException”的原因与解决办法

    “POIXMLException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 文件格式错误:如果文件格式不正确,则可能会出现此异常。例如,可能会尝试读取非Excel文件或尝试读取损坏的Excel文件。 以下是两个实例: 例1 如果文件格式错误,则可以尝试使用正确的文件格式以解决此问题。例如,在Java中,可以使用以下代码: F…

    Java 2023年5月5日
    00
  • 彻底解决tomcat中文乱码问题方案

    下面是彻底解决Tomcat中文乱码问题的完整攻略。 问题描述 在Tomcat中,有时候我们会遇到中文乱码的问题,这个问题主要是由于Tomcat默认的编码格式不是UTF-8,导致其无法正常识别中文字符。 解决方案 要解决Tomcat中文乱码问题,可以采用以下两种方法。 方法一:在Tomcat的conf目录中添加”setenv.sh”文件 在Tomcat的con…

    Java 2023年5月19日
    00
  • java异步写日志到文件中实现代码

    下面我将为您详细讲解“java异步写日志到文件中实现代码”的完整攻略,包括实现步骤、代码示例等。 实现步骤 创建一个专门的写日志的线程,并且线程中开启一个文件输出流用于写日志到文件中; 在需要写日志的地方,通过线程池将任务放到写日志的线程中去执行。 下面我们来看看具体的代码实现: 代码示例 // 创建一个写日志的类 public class LogWrite…

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