Principio y configuración del registro asíncrono log4j2
log4j2 mejora enormemente el rendimiento de la impresión de registros al asincronizar algunas etapas del proceso de registro.
Para comprender cómo log4j puede implementar el registro asincrónico y así mejorar el rendimiento, primero debe comprender el proceso básico de impresión de registros.
En log4j, hay dos conceptos importantes, a saber, Logger y Appender. Logger es responsable de producir datos de registro específicos. Nuestro Logger.info(...) habitual es el proceso de producir datos de registro. Appender es responsable de mover datos al destino, como consola, archivos, colmena, dispositivos de red, etc.
Log42 implementa el registro asincrónico de dos maneras principales:
El registrador asincrónico evita la competencia de bloqueo mediante el uso de la cola de anillo LMAX Disruptor y un subproceso de procesamiento separado, logrando así un procesamiento de registros más eficiente. rendimiento. El tamaño de la cola predeterminado es 4096. El registro asincrónico se puede habilitar mediante los siguientes parámetros.
El Appender asincrónico usa ArrayBlockingQueue en Java y el tamaño de cola predeterminado es 1024. En la prueba oficial de log4j2, asyncLogger funciona mejor que asyncAppender.
¿Puedo usar AsyncLogger y AsyncAppender al mismo tiempo? ¿El uso de ambos proporcionará un mejor rendimiento?
Según la respuesta en stackoverflow, AsyncLogger es un mecanismo asincrónico más nuevo con mejor rendimiento. AsyncAppender es el mecanismo asincrónico anterior. Usar ambos al mismo tiempo no aumentará el rendimiento. Ver
blogs.com/yeyang/p/7944906.html
https://bryantchang.github.io/2019/01/15/log4j2-asyncLogger/