基于log4j实现生成网站行为日志的功能

步骤1:添加Log4j依赖

​ 首先,在项目中添加Log4j的依赖项。如果你用Maven,可以在pom.xml中添加如下依赖:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.1</version>
</dependency>

步骤2:配置Log4j

​ 接着需要创建和配置Log4j的配置文件(例如log4jset.xml)。这个文件通常在src/main/resources目录下创建。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </Console>
        <File name="FileAppender" fileName="logs/app.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="ConsoleAppender"/>
            <AppenderRef ref="FileAppender"/>
        </Root>
    </Loggers>
</Configuration>

以下为上述代码的详细注释版,代码内容一致

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <!-- Log4j的配置根元素,status属性设置了配置过程中日志的级别,这里设置为WARN,表示只会记录警告和更严重的信息到控制台 -->

    <Appenders>
        <!-- Appenders元素用于定义日志输出的目的地,可以是控制台、文件、数据库等 -->

        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <!-- Console Appender用于将日志输出到控制台 -->
            <!-- name属性定义了这个Appender的名称 -->
            <!-- target指定了日志输出的目标,SYSTEM_OUT表示标准输出(通常是控制台) -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
            <!-- PatternLayout用于定义日志信息的格式 -->
            <!-- pattern属性定义了具体的格式模式 -->
            <!-- %d{yyyy-MM-dd HH:mm:ss} 表示日期和时间 -->
            <!-- %-5p 表示日志级别,宽度为5个字符 -->
            <!-- %c{1} 表示logger的名称,{1}限制只显示最后一部分 -->
            <!-- %L 表示日志事件发生的行号 -->
            <!-- %m 表示日志消息 -->
            <!-- %n 表示平台独立的换行符 -->
        </Console>
        
        <File name="FileAppender" fileName="logs/app.log">
            <!-- File Appender用于将日志输出到文件 -->
            <!-- name属性同样定义了Appender的名称 -->
            <!-- fileName属性指定了日志文件的路径和名称 -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
            <!-- 这里的PatternLayout和Console使用了相同的格式 -->
        </File>
    </Appenders>

    <Loggers>
        <!-- Loggers部分定义了日志记录器的配置,可以设置日志级别、指定使用的Appender等 -->

        <Root level="info">
            <!-- Root Logger是一个特殊的Logger,它是所有Logger的父Logger -->
            <!-- level属性定义了日志的基本级别。level为info意味着info级别(包括更高级别)的日志信息会被记录 -->
            <AppenderRef ref="ConsoleAppender"/>
            <!-- AppenderRef引用了具体的Appender -->
            <!-- ref属性与Appender的name属性对应,这里指定了ConsoleAppender -->
            <AppenderRef ref="FileAppender"/>
            <!-- 同时也指定了FileAppender,这意味着日志既会输出到控制台,也会记录到文件中 -->
        </Root>
    </Loggers>
</Configuration>

fileName属性定义了日志文件的路径和名称,在这个例子中是logs/app.log。这意味着日志文件将会被创建(如果尚不存在的话)在项目根目录下的logs文件夹中,并且文件名为app.log

​ 这种配置可以灵活地控制日志的生成和管理,提高了应用程序调试和监控的便利性。

控制日志文件体积 · 避免文件过大

​ 确保定期检查日志文件的大小,对于高流量的应用来说,日志文件可能迅速增长。为了管理这些日志文件,可以配置Log4j使用滚动日志文件(RollingFileAppender),它会根据文件大小或时间自动“滚动”日志文件,帮助管理日志文件的体积

​ 要配置滚动日志文件,你需要在Log4j的配置文件中设置RollingFileAppender。滚动日志文件根据时间或文件大小来拆分日志,从而能有效管理日志文件的大小。以下是一个配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <RollingFile name="RollingFileAppender" fileName="logs/app.log"
                     filePattern="logs/app-%d{yyyy-MM-dd}-%i.log">
            <!-- RollingFileAppender用来定义能滚动的文件日志 -->
            <!-- filePattern 属性定义了滚动文件的命名模式,其中%d{yyyy-MM-dd}会被替换成当前日期,%i是一个递增的计数器 -->
                     
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
            <!-- 这是日志输出的格式 -->

            <Policies>
                <!-- Policies定义了触发滚动的策略 -->
                
                <TimeBasedTriggeringPolicy/>
                <!-- TimeBasedTriggeringPolicy是基于时间的触发策略,会根据时间间隔来滚动日志,比如每天产生一个新文件 -->

                <SizeBasedTriggeringPolicy size="10MB"/>
                <!-- SizeBasedTriggeringPolicy是基于大小的触发策略,当文件达到指定大小后产生新文件 -->
            </Policies>

            <DefaultRolloverStrategy max="20"/>
            <!-- DefaultRolloverStrategy定义了滚动策略,max属性限制了最多能有多少个滚动文件。到达限制时,旧的日志文件会被删除 -->
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingFileAppender"/>
            <!-- 日志记录器使用RollingFileAppender来记录日志 -->
        </Root>
    </Loggers>
</Configuration>

步骤3:在代码中使用Log4j

​ 在你的代码中,可以通过获取Logger的实例来记录日志。例如,在java类中,你可以通过如下操作来生成日志信息:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
// 导包

public class MyClass {
    private static final Logger logger = LogManager.getLogger(MyClass.class); // 创建Logger实例对象

    public void someMethod() {
        logger.info("执行某方法"); // 在某个函数内调用Logger对象写入你想写入的信息
    }
}

在每个类的关键操作处(比如业务逻辑开始、结束、出错时),你可以添加相应的日志记录,以帮助跟踪应用程序的行为和可能的问题。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值