Skip to content

common-log4j2-starter

1.功能介绍

  1. ApplicationReadyListener

    • 程序启动时,动态获取并打印以下信息:
      • 日志存储的根目录的绝对路径
      • 应用的访问地址(包括端口)
      • 前端请求时可用的日期格式
  2. ApplicationEnvironmentPreparedListener

    • 获取日志根目录及模块名,并将其设置为环境变量供 log4j2-spring.xml 使用。
  3. TraceIdLoggingAspect

    • 每次请求开始时打印一行日志,包含请求的 traceId,以便于日志追踪。
  4. LogAspect

    • 日志切面(AOP),匹配所有 controllerservice 包中的方法,记录以下信息:
      • 方法的执行时间
      • 请求参数
      • 返回结果
  5. 使用自定义的 banner.txt

    • 读取项目的版本号,并在启动时展示自定义的 Banner。

2.配置示例

yaml
sun-rays:
  log4j2:
    home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-demo/common-log4j2-starter-demo/logs  # 日志根目录 (默认: ./logs)
    log-aspect-enable: true  # 是否启用日志切面 (默认开启)

3.案例演示

1.创建模块

CleanShot 2025-01-19 at 12.52.54@2x

2.目录结构

CleanShot 2025-01-19 at 13.10.11@2x

3.pom.xml

1.基本配置
xml
    <!-- 通过properties来指定版本号 -->
    <properties>
        <!-- 指定编译版本 -->
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 指定Sunrays-Framework的版本 -->
        <sunrays.version>1.0.0</sunrays.version>
    </properties>

    <dependencyManagement>
        <!-- 使用sunrays-dependencies来管理依赖,则依赖无需加版本号 -->
        <dependencies>
            <dependency>
                <groupId>cn.sunxiansheng</groupId>
                <artifactId>sunrays-dependencies</artifactId>
                <version>${sunrays.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
2.引入依赖
xml
    <dependencies>
        <!-- common-log4j2-starter -->
        <dependency>
            <groupId>cn.sunxiansheng</groupId>
            <artifactId>common-log4j2-starter</artifactId>
        </dependency>

        <!-- 引入web模块作为测试! -->
        <dependency>
            <groupId>cn.sunxiansheng</groupId>
            <artifactId>common-web-starter</artifactId>
        </dependency>
    </dependencies>

4.application.yml 配置日志输出根目录

yaml
sun-rays:
  log4j2:
    home: /Users/sunxiansheng/IdeaProjects/sunrays-framework-demo/common-log4j2-starter-demo/logs  # 日志根目录 (默认: ./logs)

5.Log4j2Controller.java 测试Controller

java
package cn.sunxiansheng.log4j2.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Description: Log4j2Controller
 *
 * @Author sun
 * @Create 2025/1/19 13:07
 * @Version 1.0
 */
@RestController
public class Log4j2Controller {

    /**
     * A test endpoint.
     *
     * @return A sample response.
     */
    @RequestMapping("/test")
    public String test() {
        return "This is a test response from Log4j2Controller";
    }
}

6.Log4j2Application.java 启动类

java
package cn.sunxiansheng.log4j2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Description: Log4j2Application
 *
 * @Author sun
 * @Create 2025/1/19 13:07
 * @Version 1.0
 */
@SpringBootApplication
public class Log4j2Application {

    public static void main(String[] args) {
        SpringApplication.run(Log4j2Application.class, args);
    }
}

7.测试

1.启动

CleanShot 2025-01-19 at 13.13.16@2x

2.请求

CleanShot 2025-01-19 at 13.14.40@2x