2017-08-29 8 views
1

Dans mon application DW, j'essaie de rendre la journalisation sur le fichier et la console asynchrones. Je trouve que je peux utiliser le AsyncAppender, mais il est déjà configuré dans DropWizard ou dois-je activer, si oui, comment puis-je configurer l'enregistreur pour utiliser le AsyncAppenderLa journalisation par défaut sur Fichier et Console dans Dropwizard utilise-t-elle AsyncAppender?

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

Mon config.yaml est ressemble ce

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 

J'utilise DropWizard 1.0.5.

Répondre

1

Le DefaultLoggingFactory dans dropwizard est utilisé par défaut à des fins de consignation.

qui que you can see here utilise l'AsyncLoggingEventAppenderFactory en utilisant la AsyncAppenderBase pour construire les appenders. La documentation des ch.qos.logback.core.AsyncAppenderBase stipule que:

Cette appender et les classes dérivées, journal des événements de manière asynchrone. Dans l'ordre pour éviter la perte d'événements de journalisation, cet appender doit être fermé. Il est de la responsabilité de l'utilisateur de fermer les appenders, généralement à la fin de le cycle de vie de l'application.

Cet appendeur met les événements en tampon dans une séquence de blocage . Le thread de travail créé par cet appender prend les événements du début de la file d'attente et les envoie à l'appender unique attaché à cet appender.

maintenant à votre question, mais est déjà configuré dans DropWizard ou dois-je activer?

Je dirais que vous n'avez pas besoin de l'activer explicitement pour configurer l'ajout asynchrone des journaux. Le AsyncLoggingEventAppenderFactory doit en prendre soin.

+1

merci @nullpointer –