2017-08-29 56 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 –

相關問題