欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 日志模块新增配置日志根目录和项目模块功能

日志模块新增配置日志根目录和项目模块功能

2025/2/23 14:11:25 来源:https://blog.csdn.net/m0_64637029/article/details/145247894  浏览:    关键词:日志模块新增配置日志根目录和项目模块功能

文章目录

    • 1.日志模块新增监听器支持外部配置
        • 1.common-log4j2-starter项目结构
        • 2.修改log4j2.xml为log4j2-spring.xml(这样可以解决读取外部配置但是提前创建目录的问题)
        • 3.ApplicationEnvironmentPreparedListener.java 监听器读取配置
        • 4.spring.factories 注册监听器
        • 5.log4j2-spring.xml 配置从系统属性中读取
        • 6.测试
          • 1.common-log4j2-starter-demo配置日志根目录和项目模块
          • 2.启动测试
    • 2.common-log4j2-starter更换banner.txt
        • 1.banner.txt
        • 2.application.yml

1.日志模块新增监听器支持外部配置

1.common-log4j2-starter项目结构

CleanShot 2024-12-14 at 14.21.15@2x

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 {@Overridepublic 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*/@Overridepublic 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.启动测试

CleanShot 2024-12-14 at 14.26.06@2x

2.common-log4j2-starter更换banner.txt

1.banner.txt

CleanShot 2024-12-14 at 14.28.29@2x

2.application.yml
spring:banner:image:location: classpath:banner.txt

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词