如何用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


相关推荐: TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  j*a中ArrayBlockingQueue的使用  谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接  Win10截图远程协助 Win10远程桌面截屏法【场景应用】  邦丰播放器频道搜索设置  Lar*el 关联查询:同时筛选父表与子表数据的高效策略  菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤  我的世界游戏平台入口 我的世界官方官网直达链接  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  《微信》视频号原创声明开启方法  海外搜索引擎推广效果怎么样,怎么分析效果!  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  京东快递物流信息不更新怎么办_物流停滞原因与处理方法  苹果自助维修计划支持哪些设备机型  Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程  百度竞价WAP显示PC链接问题  163邮箱网页版入口 163邮箱在线使用  iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】  深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析  Golang如何使用log记录日志信息_Golang log日志记录方法总结  口腔诊所管理软件推荐  睡觉时心跳快是什么原因 夜间心悸如何应对  C++如何实现单例模式_C++线程安全的单例模式写法  《咸鱼之王》新版孙坚技能解析  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  支付宝网页版在线入口 支付宝官网电脑登录入口  美发店速赢秘籍  秋风萧瑟洪波涌起中的萧瑟指的是什么  C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  《漫蛙manwa2》防走失网页版链接2025  鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】  《下一站江湖2》武器获取方法  《桃源记2》资源采集攻略  《小黑盒》删除历史浏览方法  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  英雄联盟争者留名活动介绍  在J*a里什么是行为抽象_抽象行为对代码复用的提升作用  Excel宏怎么删除_Excel中删除宏的详细操作流程  如何高效地基于键列值映射DataFrame中的多个列  冬季去寒冷地区旅游,以下哪种做法有助于缓解冻伤  mysql镜像配置如何恢复数据_mysql镜像配置数据恢复详细流程  快递物流路径揭秘  J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析  汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口  《我的恋爱逃生攻略》中文名字输入方法  Win11怎么开启HDR_Windows 11显示器画质增强设置  铁路12306座位怎么选_12306官方选座操作方法  Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合  德邦快递查询入口登录官网 德邦快递单号查询系统入口 

 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.