我使用 Logback 进行日志记录,我有一个问题。 我将 AsyncAppender 与 ConsoleAppender 结合使用。 当应用程序启动时,它会创建具有“logback-”线程名称的线程池。 所有日志记录工作均由“AsyncAppender-Worker-”线程完成。 创建具有“logback-”线程名称的线程池的目的是什么?它的作用是什么?
最佳答案
简短回答
这些线程用于 logback 需要在后台完成的所有其他工作 - 基于时间的翻转、套接字附加程序、异步 SMTP 附加程序等。
稍微长一点的答案
通过运行 a search on "logback-" over the logback codebase ,我只发现一个使用它的地方:ExecutorServiceUtil
。
此帮助程序类用于创建执行程序服务(只能通过Contextbase.getScheduledExecutorService()
访问),通过跟踪其用法,我发现了以下用法:
- 基于时间的翻转将异步压缩(如果启用压缩)并清理旧存档。我认为这是因为在应用程序线程上压缩旧文件是一件坏事。
- 套接字附加程序有一个连接器线程,如果连接失败,该连接器线程会重新连接,并且有一个由后台线程处理的异步消息缓冲区。
- 如果以这种方式配置,SMTP 附加程序可以是异步的 - 那么它也将使用后台执行程序。
这是一份详尽的列表。注意,这些都是从源代码中读取的。基于时间的翻转虽然异步绝对有意义,但没有记录为异步,因此可能会发生变化。套接字附加程序和 SMTP 附加程序被记录为使用后台线程。
关于java - Logback线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944821/