2017-08-29 48 views
1

在我的DW应用程序中,我试图使日志文件和控制台异步。我发现我可以使用AsyncAppender,但在DropWizard已配置或是否需要启用它,如果是的话我怎么配置记录仪使用AsyncAppenderDropwizard中是否使用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

dropwizard中的DefaultLoggingFactory默认用于记录目的。

这为you can see here使得使用AsyncAppenderBase 打造的appender使用AsyncLoggingEventAppenderFactory的。 ch.qos.logback.core.AsyncAppenderBase的文档指出:

这个appender和派生类,异步记录事件。为了避免记录事件的丢失,为了 ,这个appender应该被关闭。它是 用户的责任关闭appender,通常在应用程序生命周期的末尾 。

此appender缓冲事件在 BlockingQueue。由此appender创建的工作线程从队列头部获取事件 ,并将它们分派给附加到此appender的单个appender 。

现在你的问题,但已经在DropWizard配置,或者是否需要启用它

我会说,你不需要明确地启用它来配置日志的异步附加。 AsyncLoggingEventAppenderFactory应该照顾它。

+1

谢谢@nullpointer –

相关问题