有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Logback线程池

我使用Logback进行日志记录,我有一个问题。 我将AsyncAppender与ConsoleAppender一起使用。 当应用程序启动时,它会创建具有“logback-”线程名称的线程池。 所有日志记录工作都由“AsyncAppender Worker-”线程完成。 创建具有“logback-”线程名称的线程池的目的是什么?它做了什么工作


共 (1) 个答案

  1. # 1 楼答案

    简短的回答

    这些线程用于后台需要执行的所有其他工作—基于时间的翻转、套接字追加器、异步SMTP追加器等

    略长的回答

    通过运行a search on "logback-" over the logback codebase,我只找到了一个使用它的地方:ExecutorServiceUtil

    此帮助器类用于创建executor服务(仅由Contextbase.getScheduledExecutorService()访问),通过跟踪其用法,我发现了以下用法:

    • 基于时间的滚动将异步压缩(如果已启用压缩)并清理旧存档。我认为这是因为压缩应用程序线程上的旧文件将是一件坏事
    • 套接字附加器有一个连接器线程,在连接失败时重新连接,并且有一个异步消息缓冲区,后台线程正在处理该缓冲区
    • 如果以这种方式配置,SMTP附加器可以是异步的,那么它也将使用后台执行器

    这是一份详尽的清单。请注意,所有这些都是从源代码中读取的。基于时间的滚动虽然异步是绝对有意义的,但没有文档记录,因此可能会发生变化。套接字appender和SMTP appender被记录为使用后台线程