当前位置: 首页 > news >正文

Logback

这段代码是一个 Logback 日志框架的配置,通常用于 Java 应用程序中。Logback 是一个 Java 记录框架,旨在替代 Log4j,并提供更好的性能和灵活性。下面是对这段代码的逐行解释:

1. appender 配置

APPLICATION_APPENDER
<appender name="APPLICATION_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}</file><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxHistory>7</maxHistory><maxFileSize>20MB</maxFileSize><totalSizeCap>1GB</totalSizeCap></rollingPolicy>
</appender>
  • appender:一个日志输出的目标,这里名为 APPLICATION_APPENDER,用来指定如何记录日志。
  • class="ch.qos.logback.core.rolling.RollingFileAppender":指定这个 appender 用于将日志写入文件,并支持日志文件的滚动。
  • <file>:指定日志文件的名称,${LOG_FILE} 是一个占位符,会被加载时指定的值替换。
encoder
  • <encoder>:定义日志的编码格式。
  • <pattern>:指定日志输出的格式,${FILE_LOG_PATTERN} 是一个占位符,相应格式在配置文件的其他地方定义。
  • <charset>:指定字符集,设置为 UTF-8,确保文件内容用 UTF-8 编码。
rollingPolicy
  • <rollingPolicy>:定义如何管理日志文件,比如按时间和大小进行滚动。

  • class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy":指定日志的滚动策略,结合时间和文件大小。

  • <fileNamePattern>:指定滚动文件命名格式,${LOG_FILE}.%d{yyyy-MM-dd}.%i.log 表示根据日期和索引命名。

  • <maxHistory>:保留的最大历史记录,在这种情况下,保留最近 7 天的日志文件。

  • <maxFileSize>:每个日志文件的最大大小,设置为 20MB。

  • <totalSizeCap>:所有历史日志文件的大小总和上限,设置为 1GB。如果大小超过 1GB,较旧的日志文件会被删除。

2. root 配置

<root level="INFO"><appender-ref ref="ALIMONITOR"/><appender-ref ref="APPLICATION_APPENDER"/><appender-ref ref="STDOUT_APPENDER"/>
</root>
  • <root>:定义根日志记录器,所有未被其他 logger 配置的日志消息都会传递到这里。
  • level="INFO":设置日志级别为 INFO,意味着将记录 INFO 级别及以上的日志(如 WARNERROR 等)。
appender-ref
  • <appender-ref>:引用日志输出设备。
    • ref="ALIMONITOR":引用名为 ALIMONITOR 的 appender,该配置未包含在你的代码片段中,但它的作用通常是用于监控。
    • ref="APPLICATION_APPENDER":指向前面定义的文件 appender,将日志写入文件。
    • ref="STDOUT_APPENDER":可能是一个标准输出 appender,用于在控制台输出日志。

总结

这段代码配置了一个日志框架的核心部分,通过文件、控制台和监控输出不同的日志信息。它使用 Logback 的滚动策略,以便根据日期和大小管理日志文件,使得日志文件不至于无限制增长,便于后续的日志分析和管理。希望这帮助你理解 Logback 的配置!如果有其他问题,请随时询问。

如何按照条件,使得 <appender-ref ref="STDOUT_APPENDER"/> 生效或不生效,比如根据环境

为了使 Logback 的 <appender-ref ref="STDOUT_APPENDER"/> 依赖于特定条件(例如环境),你可以使用 Logback 的条件配置特性。在 Logback 的配置文件中,可以通过使用 IFELSE 语法来控制某些 appender 的生效。

使用 Spring Profiles

如果你的项目使用 Spring,你可以根据不同的 Spring Profile 来轻松配置 Logback。这也是一种常见的根据环境改变配置的方法。

  1. 根据 Spring Profile 的条件配置

    你可以在 logback-spring.xml 文件中使用 Spring 的 <springProfile> 标签。示例如下:

   <configuration><springProfile name="dev"><appender name="STDOUT_APPENDER" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern></encoder></appender></springProfile><springProfile name="prod"><!-- 生产环境不使用 STDOUT_APPENDER --></springProfile><root level="INFO"><appender-ref ref="APPLICATION_APPENDER" /><appender-ref ref="STDOUT_APPENDER" /><!-- 根据环境移除 STDOUT_APPENDER --><if><equals><property name="ENV" value="dev" /></equals><then><appender-ref ref="STDOUT_APPENDER" /></then></if></root></configuration>

在这个示例中,只有在 dev 环境时,STDOUT_APPENDER 才会生效。

使用外部配置文件

如果不使用 Spring,你也可以根据环境在你的代码中动态设置 Logback 的配置。你可以在代码中通过系统属性来定义哪些 appender 应该使用。

<configuration><property name="ENV" value="${env:ENVIRONMENT}" /><appender name="STDOUT_APPENDER" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="APPLICATION_APPENDER" /><if><equals><property name="ENV" value="dev" /></equals><then><appender-ref ref="STDOUT_APPENDER" /></then></if></root></configuration>

在这个示例中,STDOUT_APPENDER 只会在 ENV 等于 dev 时生效。你需要在运行应用程序时通过 -DENVIRONMENT=dev 来设置环境变量。

总结

通过使用条件配置和环境属性,你可以灵活地控制 Logback 的 appender 的行为。根据你的项目环境(如开发、测试和生产),你可以轻松地添加或移除日志记录方式。

希望这些信息能够帮助你成功实现条件参数化的日志配置!如果你有更多问题,请随时询问!

spring中怎么指定env




http://www.mrgr.cn/news/47905.html

相关文章:

  • jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例
  • Windows 11 上通过 WSL (Windows Subsystem for Linux) 安装 MySQL 8
  • xr-frame 通过shader去除视频背景色,加载透明视频
  • 家用万兆网络实践:紧凑型家用服务器静音化改造(二)
  • 使用命令行管理git项目
  • java基础学习(接口和抽象类的区别)
  • mysql复制表结构和数据
  • 企业联系电话轻松获取途径
  • STM32CUBEIDE的使用【二】PWM
  • Java Springboot 后端使用Mockito库进行单元测试流程
  • AI产品经理指南| 面试了100位AI产品经理后的心得总结
  • Makefile和Cmake
  • 高职图书分享|校企联合开发教材《前端可视化框架应用开发》
  • 模型案例:| SenseCraft Al平台模型训练与部署
  • 10.9文件操作
  • 机器学习中的多模态学习:用C/C++实现高效模型
  • 数字隔离器的技术竞争
  • 【AI-20】训练服务器和推理服务器
  • [权威出刊|稳定检索]2024年光学工程与检测技术国际会议(OETT 2024)
  • Fastgpt本地化部署 - 以MAC为例
  • IP-Guard与Ping32两大加密软件对比:安全性、功能与性能全面评测
  • Solon 3.0 新特性:SqlUtils
  • 跨境网络专线SD-WAN:跨境电商网络问题的解决方案
  • 计算机毕业设计 | SSM 旅游网站后台管理系统(附源码)
  • 使用BarTender打印
  • 国产光耦:实际应用和市场进展