Logback通过AsyncAppender包装同步Appender实现异步日志,其核心是将日志事件提交至后台队列由独立线程消费;需先定义同步Appender(如RollingFileAppender),再用AsyncAppender引用,并绑定到root或指定logger。
Logback 本身不直接提供异步日志的 标签,而是通过 AsyncAppender 包装同步 Appender 来实现异步写入。核心思路是:把日志事件提交给一个后台线程队列,由独立线程消费并委托给目标 Appender(如 FileAppender、ConsoleAppender)处理。
AsyncAppender 是一个“装饰器”型 Appender,它不负责实际输出,只负责异步调度。你需要先定义一个同步 Appender(比如输出到文件),再用 AsyncAppender 引用它:
logs/app.log logs/app.%d{yyyy-MM-dd}.%i.log 10MB %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
1024 0 false
配置好 AsyncAppender 后,需将其关联到 logger,才能生效:
AsyncAppender 的行为受几个关键参数影响,合理设置可避免丢日志或内存溢出:
级别)。设为 0 表示队满即丢;设为 queueSize 则永不丢(但可能阻塞)AsyncAppender 虽提升性能,但引入了新约束:
includeCallerData 且日志级别含 ERROR,否则不会自动补全