日记模块新增设置日记根目录和项目模块功能

打印 上一主题 下一主题

主题 860|帖子 860|积分 2580

1.日记模块新增监听器支持外部设置

1.common-log4j2-starter项目结构


2.修改log4j2.xml为log4j2-spring.xml(这样可以解决读取外部设置但是提前创建目录的问题)

3.ApplicationEnvironmentPreparedListener.java 监听器读取设置

  1. package com.sunxiansheng.log4j2.listener;
  2. import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
  3. import org.springframework.boot.context.logging.LoggingApplicationListener;
  4. import org.springframework.context.ApplicationListener;
  5. import org.springframework.core.Ordered;
  6. import org.springframework.core.env.ConfigurableEnvironment;
  7. /**
  8. * Description: 配置文件已加载,Environment 对象已初始化
  9. * 读取application.yml文件中log.home和log.module的配置
  10. *
  11. * @Author sun
  12. * @Create 2024/12/13 23:53
  13. * @Version 1.0
  14. */
  15. public class ApplicationEnvironmentPreparedListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
  16.     @Override
  17.     public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
  18.         ConfigurableEnvironment environment = event.getEnvironment();
  19.         // 获取 log.home 属性并提供默认值
  20.         String logHome = environment.getProperty("log.home", "./logs");
  21.         if ("./logs".equals(logHome)) {
  22.             System.err.println("WARNING: log.home 属性未设置,使用默认值: " + logHome);
  23.         }
  24.         // 获取 log.module 属性并提供默认值
  25.         String logModule = environment.getProperty("log.module", "defaultModule");
  26.         if ("defaultModule".equals(logModule)) {
  27.             System.err.println("WARNING: log.module 属性未设置,使用默认值: " + logModule);
  28.         }
  29.         // 将属性设置为系统属性
  30.         System.setProperty("log.home", logHome);
  31.         System.setProperty("log.module", logModule);
  32.     }
  33.     /**
  34.      * 当前监听器的启动顺序需要在日志配置监听器的前面,保证在日志文件初始化之前读取application.yml的配置,所以此处减 1
  35.      *
  36.      * @return
  37.      */
  38.     @Override
  39.     public int getOrder() {
  40.         return LoggingApplicationListener.DEFAULT_ORDER - 1;
  41.     }
  42. }
复制代码
4.spring.factories 注册监听器

  1. org.springframework.context.ApplicationListener=\
  2. com.sunxiansheng.log4j2.listener.ApplicationEnvironmentPreparedListener
复制代码
5.log4j2-spring.xml 设置从体系属性中读取

  1.     <!-- 定义全局属性,可在整个配置文件中使用 -->
  2.     <Properties>
  3.         <!-- 日志存储的根目录 -->
  4.         <Property name="LOG_HOME">${sys:log.home}</Property>
  5.         <!-- 日志文件的名称前缀 -->
  6.         <Property name="LOG_NAME">sunrays-framework</Property>
  7.         <!-- 控制台日志输出格式,带颜色 -->
  8.         <Property name="CONSOLE_LOG_PATTERN">
  9.             %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
  10.         </Property>
  11.         <!-- 文件日志输出格式,不带颜色 -->
  12.         <Property name="FILE_LOG_PATTERN">
  13.             %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [PFTID:%X{PFTID}] [Module:${sys:log.module}] %logger{36} - %msg%n%throwable
  14.         </Property>
  15.     </Properties>
复制代码
6.测试

1.common-log4j2-starter-demo设置日记根目录和项目模块

  1. log:
  2.   aspect:
  3.     enable: true # 开启自定义的日志切面
  4.   trace:
  5.     enable: true # 开启自定义的日志追踪
  6.   home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-demo/common-log4j2-starter-demo/logs # 日志根目录
  7.   module: sunrays-demo/common-log4j2-starter-demo # 模块根目录
  8. server:
  9.   port: 8082
复制代码
2.启动测试


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

1.banner.txt


2.application.yml

  1. spring:
  2.   banner:
  3.     image:
  4.       location: classpath:banner.txt
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表