如何用Logback的XML配置实现异步日志


Logback通过AsyncAppender包装同步Appender实现异步日志,其核心是将日志事件提交至后台队列由独立线程消费;需先定义同步Appender(如RollingFileAppender),再用AsyncAppender引用,并绑定到root或指定logger。

如何用logback的xml配置实现异步日志

Logback 本身不直接提供异步日志的 <appender></appender> 标签,而是通过 AsyncAppender 包装同步 Appender 来实现异步写入。核心思路是:把日志事件提交给一个后台线程队列,由独立线程消费并委托给目标 Appender(如 FileAppender、ConsoleAppender)处理。

配置 AsyncAppender 包裹目标 Appender

AsyncAppender 是一个“装饰器”型 Appender,它不负责实际输出,只负责异步调度。你需要先定义一个同步 Appender(比如输出到文件),再用 AsyncAppender 引用它:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>logs/app.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <maxFileSize>10MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
  </rollingPolicy>
  <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>
<p><!-- 异步包装 -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE"/>
<!-- 可选:队列大小,默认256 -->
<queueSize>1024</queueSize>
<!-- 可选:丢弃超过队列容量的日志?默认true -->
<discardingThreshold>0</discardingThreshold>
<!-- 可选:是否包含调用者信息(如行号),异步下默认false以提升性能 -->
<includeCallerData>false</includeCallerData>
</appender>

将 AsyncAppender 绑定到 Logger 或 root

配置好 AsyncAppender 后,需将其关联到 logger,才能生效:

Otter.ai Otter.ai

一个自动的会议记录和笔记工具,会议内容生成和实时转录

Otter.ai 141 查看详情 Otter.ai
  • 绑定到 root logger(全局生效):
<root level="INFO">
  <appender-ref ref="ASYNC_FILE"/>
</root>
  • 或指定某个包/类使用异步日志:
<logger name="com.example.service" level="DEBUG" additivity="false">
  <appender-ref ref="ASYNC_FILE"/>
</logger>

关键参数说明与调优建议

AsyncAppender 的行为受几个关键参数影响,合理设置可避免丢日志或内存溢出:

  • queueSize:阻塞队列容量。默认 256,建议根据吞吐量设为 512–4096;过小易丢日志,过大占内存
  • discardingThreshold:当队列剩余容量 ≤ 该值时,新日志会被丢弃(非 ERROR 级别)。设为 0 表示队满即丢;设为 queueSize 则永不丢(但可能阻塞)
  • includeCallerData:若需 %class、%method、%line 等信息,需设为 true,但会显著降低性能(需遍历栈帧),异步场景通常关闭
  • neverBlock:设为 true 时,队列满则直接丢日志(不等待);默认 false(会阻塞生产者线程直到有空位)

注意事项与常见问题

AsyncAppender 虽提升性能,但引入了新约束:

  • 日志输出不保证实时可见:异步线程可能延迟写入,程序崩溃时队列中日志会丢失
  • 异常堆栈在异步模式下可能不完整:除非开启 includeCallerData 且日志级别含 ERROR,否则不会自动补全
  • 不要对 AsyncAppender 嵌套使用:即不能让一个 AsyncAppender 引用另一个 AsyncAppender
  • 如果同时需要控制台和文件异步输出,应分别定义两个 AsyncAppender,各自包装 ConsoleAppender 和 RollingFileAppender

以上就是如何用Logback的XML配置实现异步日志的详细内容,更多请关注其它相关文章!


# 转换成  # 许昌网站推广优化选哪家  # 新疆网站搜索引擎优化  # 百度seo专员  # 谷歌seo全球搜  # 北海百度关键词排名  # 枣庄seo公司地址  # 滁州网站优化推荐苹果版  # 上海网站推广营销设计  # 企业网站视频怎么推广  # 建设工程在什么网站公示  # 转换为  # app  # 再用  # 行号  # 用手  # 如何用  # 绑定  # 可选  # 有什么  # 设为  # yy  # 常见问题  # 栈 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 快手极速版在线体验区 快手极速版网页体验入口  c++如何掌握指针的核心用法_c++指针入门到精通指南  VS Code源代码管理(SCM)视图的进阶使用技巧  人教版电子教材在线获取指南  手机耗电快是什么原因 延长手机电池续航时间的设置方法【详解】  优酷官网登录入口电脑版 优酷官网网址入口  iCloud官方网站 iCloud网页版在线登录入口  Excel怎么用XLOOKUP函数实现双向查找_ExcelXLOOKUP替代VLOOKUP+HLOOKUP的高级用法  QQ网页版入口导航 QQ网页版在线访问通道  Python中处理嵌套字典与列表的数据提取与过滤教程  mysql镜像配置如何恢复数据_mysql镜像配置数据恢复详细流程  Microsoft Edge网页字体太淡看不清怎么办_Microsoft Edge字体渲染优化技巧  智学网成绩单查询系统网_智学网学生平台登录  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  批改网网页版登录 批改网电脑版学生登录入口  汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口  解决Flex容器横向滚动内容截断与偏移问题  Python中深度嵌套字典与列表的数据提取与条件过滤指南  钉钉任务无法提醒如何处理 钉钉任务提醒优化方法  金牛福袋获取攻略  如何使用 composer 和 aop-php 实现 AOP 编程?  Retrofit根路径POST请求:@POST("/") 的应用与解析  C++如何实现单例模式_C++线程安全的单例模式写法  《偃武》甘宁技能详解  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  PHP实现等比数列:构建数组元素基于前一个值递增的方法  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接  Highcharts雷达图轴线交点数值标注指南  如何查询个人病历记录  PHP中获取HTTP响应状态消息:方法与限制  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  yy漫画官方网站登录入口_yy漫画在线阅读页面地址  行者app怎样导出日志  使用document.execCommand实现Web文本编辑器加粗/取消加粗  J*aScript对象中深度嵌套URL键的查找与更新策略  百度识图图像分析 百度识图识别平台  如何使用 Optional 类型并满足 Pylint 的类型检查  win11关机几秒又自己开机 Win11关机自动重启问题修复  TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法  Mac hosts文件在哪里_Mac修改hosts文件详细教程  AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例  4399造梦西游3无敌版_4399游戏入口  Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】  J*aScript 数值去小数位处理:多种方法与实践  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  德邦快递收费标准详解  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略 

 2025-12-18

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.