深入浅析java web log4j 配置及在web项目中配置Log4j的技巧

深入浅析Java Web Log4j配置

什么是Log4j?

Log4j 是一个基于Java的开源日志记录工具。它被设计为灵活且可扩展的,但也必须是高效的。为了实现这个目标,Log4j 架构被划分成三层 — API 层、内核层和附加组件。

Log4j的配置

在Java web项目中,我们可以通过配置文件来指定Log4j的应用。Log4j的配置文件是一个文本文件,通常为log4j.properties或log4j.xml。

配置文件语法

使用注释:使用#或!符号来添加注释。

定义Logger:Logger是日志记录器,每个Logger都有一个唯一的名字,用于区分不同的logger。定义方法如下:

log4j.logger.logger_name = level, appender_name1, appender_name2, ...
  • logger_name 为Logger的名称
  • level 表示Logger对应的日志记录级别
  • appender_name1, appender_name2 ...表示Logger输出的目的地(即 appenders),可以指定多个

定义Appender:Appender是输出目的地,可以是控制台、文件等。定义方法如下:

log4j.appender.appender_name = class_name
  • appender_name为该appender的名称
  • class_name则为输出目的地的实现类的全限定名称(比如:org.apache.log4j.ConsoleAppender、org.apache.log4j.FileAppender)。

定义Layout:Layout 用于定义日志输出的格式。一个Layout 的实例一旦绑定到一个Appender 上,所有的输出信息都会以指定的格式输出。定义方法如下:

log4j.appender.appender_name.layout = class_name
  • appender_name为该appender的名称
  • class_name则为Layout 的实现类的全限定名称(比如:org.apache.log4j.PatternLayout)。

配置文件示例

以下示例展示了如何将级别为DEBUG或更高的日志输出到控制台,同时将级别为warn或者更高的日志输出到一个文件中。

# log4j.properties
log4j.rootLogger=DEBUG, console, file

# 控制台输出
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

# 文件输出
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=./logs/myapp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=[%d] [%p] - %m%n

# 设置日志级别日志
log4j.logger.com.aliba.transjob=DEBUG
log4j.logger.com.alibaba.datax.plugins=DEBUG

在Web项目中配置Log4j

以下是在Web项目中配置Log4j的步骤:

步骤1:导入Log4j jar包

在项目中导入log4j的jar包,以Maven项目为例,可以在pom.xml中添加如下依赖:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

步骤2:添加log4j.properties或log4j.xml配置文件

在src/main/resources目录下创建log4j.properties或log4j.xml文件,并按照上述配置文件语法进行配置。

步骤3:添加Log4j初始化Servlet

在项目中添加一个Servlet用于Log4j的初始化。以下是一个示例:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;

import java.io.File;
import java.net.URL;

public class Log4jInitServlet extends HttpServlet {

    public void init() throws ServletException {
        String log4jLocation = getInitParameter("log4j-properties-location");
        String webAppPath = this.getClass().getResource("/").getPath();
        String log4JFilePath = webAppPath + log4jLocation;
        File logFile= new File(log4JFilePath);
        if(logFile.exists()) {
            System.setProperty("log4j.configuration",log4JFilePath);
            PropertyConfigurator.configure(log4JFilePath);
            System.out.println("Log4jHasInitialized,beforejsp");
        }else{
            System.out.println("CouldnotlocateLog4jfile");
        }
    }
}

步骤4:在web.xml文件中添加Servlet配置

在web.xml文件中添加以下Servlet配置:

<servlet>
    <servlet-name>Log4jInitServlet</servlet-name>
    <servlet-class>...Log4jInitServlet</servlet-class>
    <init-param>
        <param-name>log4j-properties-location</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

其中,类名需根据实际情况进行修改,如com.example.Log4jInitServlet。

示例

以下是一个日志输出到文件中的示例:

import org.apache.log4j.Logger;

public class myClass {
    private static final Logger logger = Logger.getLogger(myClass.class);

    public void testMethod() {
        logger.debug("This is a debug message");
        logger.info("This is a info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
        logger.fatal("This is a fatal message");
    }
}

在log4j.properties文件中的配置应该类似下面这样:

log4j.rootLogger = INFO, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/logs/myapp.log
log4j.appender.FILE.encoding=UTF-8
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n

以上配置将INFO级别的信息输出到myapp.log文件中,并且以指定的格式记录。

当myClass类中调用了testMethod() 方法时,Log4j就会记录相关日志,并输出到文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入浅析java web log4j 配置及在web项目中配置Log4j的技巧 - Python技术站

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

相关文章

  • Java maven三种仓库,本地仓库,私服,中央仓库的配置

    Java maven作为代表性的构建工具,具有良好的依赖管理、插件扩展等特性。它的运行需要依赖于仓库的配置,而常见的仓库包括本地仓库、私服、中央仓库。下面将分别对这三种仓库进行详细的配置攻略。 本地仓库配置 1.在本地磁盘上创建一个文件夹作为本地仓库。例如:C:\Users\UserName.m2\repository 2.在maven的全局配置文件中(se…

    Java 2023年5月20日
    00
  • XML简介

    XML简介 XML(可扩展标记语言)是一种用于描述文档内容的标记语言,它使用标签来标识文档中各个部分的含义,并通过这些标记实现对文档内容的组织、表示和传输。相较于 HTML 等文档语言,XML 更加通用灵活,可以应用于各种场景。 XML 基础结构 XML 文档由各种元素构成,每个元素包含一个标记和一个值(也称为“内容”或“文本”)。标记用来表示该元素的类型和…

    Java 2023年5月26日
    00
  • Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)

    下面我会给出一份详细的攻略,帮助你快速了解如何通过使用Eclipse、Java、Swing和Mysql来实现电影购票系统。 准备工作 安装 JDK 和 Eclipse 下载该电影购票系统所需的Java类库和驱动程序mysql-connector-java-5.1.47-bin.jar,并在Eclipse的项目中添加这些类库 搭建Mysql数据库 设计数据库 …

    Java 2023年5月23日
    00
  • Maven 生成打包可执行jar包的方法步骤

    Maven 是一款优秀的项目管理工具,也是开发 Java 项目的标准工具之一,本文将介绍使用 Maven 生成打包可执行 jar 包的方法步骤,具体如下: 步骤一:创建 Maven 项目 在开始之前,先要确保安装了 JDK 和 Maven,然后执行以下命令: mvn archetype:generate -DgroupId=com.mycompany.app…

    Java 2023年5月26日
    00
  • 使用 Apache 反向代理的设置技巧

    使用 Apache 反向代理可以帮助我们有效地实现多个应用之间的无缝集成和流量控制。在下面的攻略中,我们将介绍使用 Apache 反向代理的设置技巧,帮助您更好地应用于实际项目中。 原理简介 反向代理是指代理服务器接收客户端请求后,将请求转发给内部服务器,并将内部服务器返回的响应结果返回给客户端。在反向代理的过程中,客户端无需直接连接内部服务器,这样可以实现…

    Java 2023年5月19日
    00
  • 详解Spring Security 中的四种权限控制方式

    下面我将详细讲解“详解Spring Security 中的四种权限控制方式”: 1. 认证和鉴权 几乎所有的Spring Security权限控制都需要经过两个基本步骤:认证和鉴权。 认证(Authentication):指确定用户的身份,通常是用户提供用户名和密码给系统来验证其是否能够登录。 鉴权(Authorization):指确定用户是否有权限访问某些…

    Java 2023年5月20日
    00
  • maven配置阿里仓库的方法步骤

    Maven 是一款开源项目建构工具,可以帮助我们更方便地构建、管理和发布项目。默认情况下,Maven 会从 Maven 官方仓库中下载依赖,但是有时候官方仓库的下载速度会受制于网络环境,因此我们需要配置Maven访问阿里仓库以加速依赖的下载。 以下是 Maven 配置阿里仓库的方法步骤: 1. 打开 Maven 的配置文件 Maven 的配置文件为 sett…

    Java 2023年5月20日
    00
  • Spring MVC过滤器-登录过滤的代码实现

    Spring MVC过滤器-登录过滤的代码实现 Spring MVC是一种基于Java的Web框架,它提供了许多便捷的功能和工具,使得开发者可以更加高效地开发Web应用程序。其中,过滤器是Spring MVC中常用的一种技术,本文将详细讲解如何在Spring MVC中实现登录过滤,并提供两个示例来说明如何实现这一过程。 步骤一:创建Spring MVC项目 …

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