common-log4j2-starter
1.功能介绍
ApplicationReadyListener
- 程序启动时,动态获取并打印以下信息:
- 日志存储的根目录的绝对路径
- 应用的访问地址(包括端口)
- 前端请求时可用的日期格式
- 程序启动时,动态获取并打印以下信息:
ApplicationEnvironmentPreparedListener
- 获取日志根目录及模块名,并将其设置为环境变量供
log4j2-spring.xml
使用。
- 获取日志根目录及模块名,并将其设置为环境变量供
TraceIdLoggingAspect
- 每次请求开始时打印一行日志,包含请求的
traceId
,以便于日志追踪。
- 每次请求开始时打印一行日志,包含请求的
LogAspect
- 日志切面(AOP),匹配所有
controller
和service
包中的方法,记录以下信息:- 方法的执行时间
- 请求参数
- 返回结果
- 日志切面(AOP),匹配所有
使用自定义的
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.创建模块
2.目录结构
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);
}
}