Dropwizard中默认的文件和控制台日志记录是否使用AsyncAppender?

时间:2017-08-29 18:05:46

标签: log4j dropwizard asyncappender

在我的DW应用程序中,我正在尝试将日志记录到文件和控制台异步。我发现我可以使用AsyncAppender,但是已经在DropWizard中配置了,或者我是否需要启用它,如果是这样,我如何配置记录器以使用AsyncAppender

Logger root = (Logger)   LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
AsyncAppender fileAppender = (AsyncAppender) root.getAppender("async-file-appender");

我的config.yaml看起来像这样

server:
  minThreads: 512
  type: default
supportedCarParcFile: /opt/foo/my_app/config/my-app.json

logging:  
  appenders:  
    -  
      threshold: INFO  
      type: console  
    -  
      archivedFileCount: 7  
      archivedLogFilenamePattern: /opt/foo/my_app/logs/my-app-%d.log.gz  
      currentLogFilename: /opt/foo/my_app/logs/my-app.log  
      threshold: INFO  
      timeZone: CST  
      type: file  
    -  
      archivedFileCount: 7  
      archivedLogFilenamePattern: /opt/foo/my_app/logs/my-app_error-%d.log.gz  
      currentLogFilename: /opt/foo/my_app/logs/my-app_error.log  
      threshold: ERROR  
      timeZone: CST  
      type: file  
  loggers:  
    metrics:  
      additive: true  
      appenders:  
        -  
          archivedFileCount: 10  
          archivedLogFilenamePattern: /opt/foo/my_app/logs/metrics-%d.log.gz  
          currentLogFilename: /opt/foo/my_app/logs/metrics.log  
          type: file  
      level: INFO  

我正在使用 DropWizard 1.0.5

1 个答案:

答案 0 :(得分:2)

默认情况下,dropwizard中的DefaultLoggingFactory用于记录目的。

you can see here使用AsyncLoggingEventAppenderFactory使用AsyncAppenderBase 构建appender。 ch.qos.logback.core.AsyncAppenderBase的文档指出:

  

此appender和派生类,异步记录事件。为了   为避免丢失日志记录事件,应关闭此appender。它是   用户有责任关闭appender,通常是在结束时   应用程序生命周期。

     

此appender缓冲a中的事件   BlockingQueue的。这个appender创建的工作线程需要事件   从队列的头部,并将它们发送到单个appender   附在这个附加器上。

现在问题是,但是已经在DropWizard中配置了,还是我需要启用它

我想说,您不需要明确启用它来配置日志的异步附加。 AsyncLoggingEventAppenderFactory将照顾它。

相关问题