当前位置: 首页> 科技> 互联网 > 网络规划设计师第二版_郴州网站建设培训_软文推广范文_网络营销活动案例

网络规划设计师第二版_郴州网站建设培训_软文推广范文_网络营销活动案例

时间:2025/7/17 3:54:36来源:https://blog.csdn.net/DreamStar2560/article/details/147316234 浏览次数:0次
网络规划设计师第二版_郴州网站建设培训_软文推广范文_网络营销活动案例

文章目录

  • 1. property
  • 2. springProperty
  • 3. appender
  • 4. logger
    • 4.1. 通过包路径控制日志
    • 4.2. 通过类名控制日志
    • 4.3. 按自定义 Logger 名称控制日志
  • 5. root
  • 6. springProfile

SpringBoot 项目中可以通过自定义 logback-spring.xml 中各项配置,实现日志的打印控制

1. property

定义全局变量,简化重复值

<property name="LOG_HOME" value="logs" />

2. springProperty

application.properties环境变量 中读取值,定义全局变量

<!-- 应用名称 -->
<springProperty name="APPLICATION_NAME" source="spring.application.name"/>

3. appender

Appender 负责将日志输出到指定位置

  • ConsoleAppender:控制台输出
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder>
</appender>
  • RollingFileAppender:滚动文件输出
<!-- 滚动文件输出 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 归档策略:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 单个文件最大大小 --><maxFileSize>50MB</maxFileSize><!-- 日志最大的历史 --><maxHistory>60</maxHistory><!-- 启用异步压缩 --><asyncCompression>true</asyncCompression><!-- 设置最大临时文件大小 --><maxTempFileSize>0MB</maxTempFileSize></rollingPolicy><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- 只允许 INFO 级别的日志通过 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>INFO</level><!-- 匹配时的操作:记录 --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:不记录 --><onMismatch>DENY</onMismatch></filter><!-- 错误处理器:当主 Appender 写入失败时,自动将日志事件转发到备用 Appender,自定义错误处理器:CustomErrorHandler extends ErrorHandlerBase1. 确保备用 Appender 不依赖可能失败的同类型资源2. 错误处理逻辑应轻量,避免在失败时加剧性能问题3. 备用 Appender 仅能捕获主 Appender 的错误,无法恢复已丢失的日志事件,需结合监控告警及时修复主 Appender。--><errorHandler class="com.example.CustomErrorHandler"><appender-ref ref="FAILOVER_APPENDER" /></errorHandler>
</appender>
  • AsyncAppender:异步文件输出
<!-- 异步打印日志:解决同步日志打印影响程序性能问题 -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 绑定目标 Appender(如文件、控制台) --><appender-ref ref="FILE" /><!-- 队列容量(默认256)。队列满时,新日志事件将被阻塞或丢弃 --><queueSize>512</queueSize><!-- 队列剩余容量阈值,低于此值时丢弃低 TRACE/DEBUG/INFO 日志(默认队列剩余20%时丢弃),设为 0 表示永不丢弃 --><discardingThreshold>0</discardingThreshold> <!-- 是否包含调用者信息(如类名、方法名,默认false) --><includeCallerData>true</includeCallerData> <!-- 关闭 Appender 时的最大等待时间(毫秒,默认不限制)。超时后未处理的日志事件将被丢弃。--><maxFlushTime>5000</maxFlushTime>
</appender>
  • KafkaAppender:Kafka 消息输出
<!-- Kafka Appender -->
<appender name="KAFKA" class="com.github.danielwegener.logback.kafka.KafkaAppender"><!-- Kafka 生产者配置 --><producerConfig>bootstrap.servers=${kafka.bootstrap.servers}acks=1                   <!-- 至少等待 Leader 确认 -->retries=3                <!-- 失败重试次数 -->max.block.ms=5000        <!-- 生产者阻塞超时时间 --></producerConfig><!-- topic --><topic>${kafka.topic}</topic><encoder class="com.github.danielwegener.logback.kafka.encoding.LayoutKafkaMessageEncoder"><layout class="ch.qos.logback.classic.layout.PatternLayout"><pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg</pattern></layout></encoder><!-- 异步发送策略 --><deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy" /><!-- 错误处理:发送失败时记录到本地文件 --><appender-ref ref="ERROR_FILE" />
</appender>

4. logger

Logger 名称的层级规则,Logger 的名称通过‌点号(.)‌分割层级,例如:

  • com.example.myapp.TestApi 的父级 Logger 是 com.example.myapp
  • com.example.myapp 的父级 Logger 是 com.example
  • com.example 的父级 Logger 是 com
  • com 的父级 Logger 是 根 Logger(root)

Logback 的配置文件中,<logger> 元素用于 精细化控制 特定范围的日志输出

  • name:指定日志作用的范围 (包路径或 Logger 名称)
  • level:设置日志级别(TRACE/DEBUG/INFO/WARN/ERROR/OFF)
  • additivity:是否继承父 Logger 的 Appender (默认 true,设为 false 可避免重复输出)

4.1. 通过包路径控制日志

<!-- 1. 作用范围‌:org.springframework 包及其子包下的所有类
-->
<logger name="org.springframework" level="WARN" additivity="false"><appender-ref ref="SPRING_FILE"/>
</logger>

4.2. 通过类名控制日志

<!-- 1. 作用范围‌:com.example.myapp.TestApi 类
-->
<logger name="com.example.myapp.TestApi" level="DEBUG" additivity="false"><appender-ref ref="CONSOLE"/>
</logger>

4.3. 按自定义 Logger 名称控制日志

<!-- 1. 作用范围‌:JOB_LOG 的日志(需结合 @Slf4j(topic = "JOB_LOG") 使用)
-->
<logger name="JOB_LOG" level="DEBUG" additivity="false"><appender-ref ref="CONSOLE"/>
</logger>

5. root

Logger 配置,控制 全局日志级别

<root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="ASYNC_FILE"/>
</root>

6. springProfile

根据 Spring profile 不同,按环境激活配置

<springProfile name="dev"><!-- 仅当 Profile 包含 "dev" 时生效 --><logger name="com.example" level="DEBUG" />
</springProfile>
关键字:网络规划设计师第二版_郴州网站建设培训_软文推广范文_网络营销活动案例

版权声明:

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

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

责任编辑: