2017-08-29 9 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がログ用に使用されます。

このようにAsyncLoggingEventAppenderFactoryを使用すると、AsyncAppenderBase を使用してアペンダーを構築します。 ch.qos.logback.core.AsyncAppenderBaseのドキュメントには、次のように記載されています。

このアペンダーと派生クラスは、イベントを非同期でログに記録します。ロギングイベントの損失を避けるために の順番で、このアペンダを閉じる必要があります。通常、アプリケーションライフサイクルの最後に の末尾にアペンダーを閉じるユーザーの責任は です。

このアペンダーは、 BlockingQueueでイベントをバッファリングします。このアペンダーによって作成されたワーカースレッドは、キューの先頭からイベント を受け取り、このアペンダーに添付された単一のアペンダー にディスパッチします。

あなたの質問に今

すでにDropWizardで構成されたか、私はそれをを有効にする必要がないということですか?

ログの非同期追加を設定するために明示的に有効にする必要はありません。 AsyncLoggingEventAppenderFactoryが処理します。

+1

ありがとうございます@nullpointer –

関連する問題