1.日记模块新增监听器支持外部设置
1.common-log4j2-starter项目结构
2.修改log4j2.xml为log4j2-spring.xml(这样可以解决读取外部设置但是提前创建目录的问题)
3.ApplicationEnvironmentPreparedListener.java 监听器读取设置
- package com.sunxiansheng.log4j2.listener;
- import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
- import org.springframework.boot.context.logging.LoggingApplicationListener;
- import org.springframework.context.ApplicationListener;
- import org.springframework.core.Ordered;
- import org.springframework.core.env.ConfigurableEnvironment;
- /**
- * Description: 配置文件已加载,Environment 对象已初始化
- * 读取application.yml文件中log.home和log.module的配置
- *
- * @Author sun
- * @Create 2024/12/13 23:53
- * @Version 1.0
- */
- public class ApplicationEnvironmentPreparedListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
- @Override
- public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
- ConfigurableEnvironment environment = event.getEnvironment();
- // 获取 log.home 属性并提供默认值
- String logHome = environment.getProperty("log.home", "./logs");
- if ("./logs".equals(logHome)) {
- System.err.println("WARNING: log.home 属性未设置,使用默认值: " + logHome);
- }
- // 获取 log.module 属性并提供默认值
- String logModule = environment.getProperty("log.module", "defaultModule");
- if ("defaultModule".equals(logModule)) {
- System.err.println("WARNING: log.module 属性未设置,使用默认值: " + logModule);
- }
- // 将属性设置为系统属性
- System.setProperty("log.home", logHome);
- System.setProperty("log.module", logModule);
- }
- /**
- * 当前监听器的启动顺序需要在日志配置监听器的前面,保证在日志文件初始化之前读取application.yml的配置,所以此处减 1
- *
- * @return
- */
- @Override
- public int getOrder() {
- return LoggingApplicationListener.DEFAULT_ORDER - 1;
- }
- }
复制代码 4.spring.factories 注册监听器
- org.springframework.context.ApplicationListener=\
- com.sunxiansheng.log4j2.listener.ApplicationEnvironmentPreparedListener
复制代码 5.log4j2-spring.xml 设置从体系属性中读取
- <!-- 定义全局属性,可在整个配置文件中使用 -->
- <Properties>
- <!-- 日志存储的根目录 -->
- <Property name="LOG_HOME">${sys:log.home}</Property>
- <!-- 日志文件的名称前缀 -->
- <Property name="LOG_NAME">sunrays-framework</Property>
- <!-- 控制台日志输出格式,带颜色 -->
- <Property name="CONSOLE_LOG_PATTERN">
- %style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{green} %style{[%t]}{blue} %highlight{%p}{FATAL=red blink, ERROR=red, WARN=yellow, INFO=green, DEBUG=cyan, TRACE=magenta} %style{[PFTID:%X{PFTID}]}{magenta} %style{[Module:${sys:log.module}]}{yellow} %style{%logger{36}}{cyan} - %msg%n%throwable
- </Property>
- <!-- 文件日志输出格式,不带颜色 -->
- <Property name="FILE_LOG_PATTERN">
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [PFTID:%X{PFTID}] [Module:${sys:log.module}] %logger{36} - %msg%n%throwable
- </Property>
- </Properties>
复制代码 6.测试
1.common-log4j2-starter-demo设置日记根目录和项目模块
- log:
- aspect:
- enable: true # 开启自定义的日志切面
- trace:
- enable: true # 开启自定义的日志追踪
- home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-demo/common-log4j2-starter-demo/logs # 日志根目录
- module: sunrays-demo/common-log4j2-starter-demo # 模块根目录
- server:
- port: 8082
复制代码 2.启动测试
2.common-log4j2-starter更换banner.txt
1.banner.txt
2.application.yml
- spring:
- banner:
- image:
- location: classpath:banner.txt
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |