Java 里的 Logger(日志记录器)本身是否支持异步,要看你用的是哪一套日志框架,不能笼统地说“Java Logger 支持/不支持”。
下面分情况说明:
java.util.logging(JUL,JDK 自带 Logger)不支持异步(默认)
java.util.logging.Logger 是 同步日志logger.info(...) 会立即写日志✅ 想要异步,需要:
HandlerAsyncHandler(自己实现)支持,而且很强
<AsyncAppender name="Async">
<AppenderRef ref="File"/>
</AsyncAppender>
<Configuration>
<Loggers>
<Root level="info">
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
启动参数:
-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
✅ 特点:
支持异步,但弱于 Log4j2
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE"/>
</appender>
⚠ 注意:
BlockingQueue只是门面,不支持也不反对异步
异步能力取决于底层实现:
JDK 自带的 Logger 不支持异步;Log4j2 原生支持且性能最好;Logback 支持但一般。
如果你愿意,可以告诉我:
我可以直接给你最合适的异步日志配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。