【Log日志】logback.xml动态配置属性值(包括接入的第三方配置)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1如何动态配置Logback的存放路径我们在开发过程中,会使用到logback.xml 配置来管理日志文件; 比如

作者石臻臻, CSDN博客之星Top5Kafka Contributornacos Contributor华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家KnowStreaming


KnowStreaming  是滴滴开源的Kafka运维管控平台, 有兴趣一起参与参与开发的同学,但是怕自己能力不够的同学,可以联系我,当你导师带你参与开源!

1如何动态配置Logback的存放路径

我们在开发过程中,会使用到logback.xml 配置来管理日志文件; 比如

<appender name="common" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.path}/common.log</file>
  <append>true</append>
  <encoder>
   <pattern>%d{yyyy-MM-dd HH:mm:ss} %c{1} %L [%p] %m%n %caller{0}</pattern>
  </encoder>
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
   <level>INFO</level>
   <onMatch>ACCEPT</onMatch>
   <onMismatch>DENY</onMismatch>
  </filter>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>${log.path}/common.log.%d{yyyy-MM-dd}</fileNamePattern>
   <maxHistory>3</maxHistory>
  </rollingPolicy>
 </appender> 

其中log.path是我们定义的文件路径; 那么我们又不想把这个值写死在代码里面; 并且如果能放在配置管理里面(例如nacos)那就更好不过了;

那么应该怎么做呢?

如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <!-- %p级别 %m消息 %c.%M包+方法 %F:%L文件+行 -->
 <!--<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} | %p | %m | %c.%M | %F:%L %n"/>-->
 <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} >>> %msg%n"/>
 <!-- 获取Environment中的值-->
 <springProperty scope="context" name="log.path" source="log.path"/>
 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
  <encoder charset="UTF-8">
   <pattern>${pattern}</pattern>
  </encoder>
 </appender>
 <appender name="common" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${log.path}/common.log</file>
  <append>true</append>
  <encoder>
   <pattern>%d{yyyy-MM-dd HH:mm:ss} %c{1} %L [%p] %m%n %caller{0}</pattern>
  </encoder>
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
   <level>INFO</level>
   <onMatch>ACCEPT</onMatch>
   <onMismatch>DENY</onMismatch>
  </filter>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>${log.path}/common.log.%d{yyyy-MM-dd}</fileNamePattern>
   <maxHistory>3</maxHistory>
  </rollingPolicy>
 </appender>
</configuration>

其中最重要的一段代码是

<!-- 获取Environment中的值-->
 <springProperty scope="context" name="log.path" source="log.path"/>

这个是从spring容器中获取属性值; 只有这个属性已经被加载到了Environment中就可以读取到;

还有就是非常重要的一点是 文件的命名是logback-spring.xml; 如果命名为 logback-spring.xml会读取不到naocs等配置管理中间件的属性值的;为啥要改成logback-spring.xml参考链接

最主要的就是加载时机的问题

application.yml 中的配置/或者nacos中的配置

## 自定义日志文件存储位置
log:
  path: /Users/xxxx/logs

怎么接入Nacos 使用Nacos简化SpringBoot配置(所有配置放入到Nacos中)


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
425 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
22天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
3月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
354 3
|
23天前
|
SQL
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
41 5
|
1月前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
140 0
|
3月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
47 0
|
3月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
297 0
|
3月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
84 1