[JAVA] Log4J Async va ralentir

Tout le monde aime Log4J. Cet article est un paramètre asynchrone L'auteur ne sait pas grand-chose sur le système de journalisation. J'ai résumé l'article parce qu'il ne fonctionnait pas parce qu'il était foiré sur le WEB.

Conclusion

D'une manière ou d'une autre, c'est plus rapide qu'Async dans mon environnement.

Motivation

Étant donné que les goulots d'étranglement des applications WEB sont la journalisation et la base de données, j'en voulais un rapide.

officiel

http://logging.apache.org/log4j/2.x/manual/async.html C'est 6 à 68 fois plus rapide. C'est incroyable. Vous ne devez pas l'utiliser pour les journaux de suivi d'audit ou les journaux d'exceptions! C'est dit, mais ça va. utilisation.

demande

Selon la documentation IPA (les membres du projet ont lu et m'ont donné des spécifications),

Comment écrire

Ecrire AsyncLogger entouré d'Async

Le premier n'a pas fonctionné comme je l'ai essayé. Pourquoi? → Utiliser AsyncLogger

RollingRandomAccessFileAppender, FileAppender et RollingFileAppender

RandomAccessFile semble être rapide, donc adopté

log4j2.xml Je ne sais pas vraiment. difficile.

の前にlog4j.properties

log4j.properties Cela arrive si vous ne le créez pas et ne le mettez pas, alors mettez-le grossièrement. Je pense que c'est une demande de FW Vert.x, mais je ne la chasse pas

log4j.rootLogger=ERROR, console
log4j.logger.xxx=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p-%c] %m%n

log4j.xml

J'écrirai honnêtement

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <RollingRandomAccessFile name="AppLog" fileName="logs/app.log" filePattern="logs/old/app-%d{yyyy-MM-dd}.log.gz"
                 ignoreExceptions="false">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy/>
    </RollingRandomAccessFile>
    <RollingRandomAccessFile name="AccessLog" fileName="logs/access.log" filePattern="logs/old/access-%d{yyyy-MM-dd}.log.gz"
                 ignoreExceptions="false">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy/>
    </RollingRandomAccessFile>
    <RollingRandomAccessFile name="ErrorLog" fileName="logs/error.log" filePattern="logs/old/error-%d{yyyy-MM-dd}.log.gz"
                 ignoreExceptions="false">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy/>
    </RollingRandomAccessFile>
    <RollingRandomAccessFile name="SQLLog" fileName="logs/sql.log" filePattern="logs/old/sql-%d{yyyy-MM-dd}.log.gz"
                 ignoreExceptions="false">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy/>
    </RollingRandomAccessFile>
    <Async name="AppAsync">
      <AppenderRef ref="Console"/>
    </Async>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="AppAsync"/>
    </Root>
    <AsyncLogger level="debug" name="access-log">
      <AppenderRef ref="AccessLog"/>
    </AsyncLogger>
    <AsyncLogger level="debug" name="error-log">
      <AppenderRef ref="ErrorLog"/>
    </AsyncLogger>
    <AsyncLogger level="debug" name="sql-log">
      <AppenderRef ref="SQLLog"/>
    </AsyncLogger>
  </Loggers>
</Configuration>

performance

Frappez grossièrement avec la commande ʻab` Vérifiez le serveur de fichiers ultra lent de Celeron

asynchrone

Requests per second:    347.96 [#/sec](mean)

Synchroniser

Requests per second:    2830.04 [#/sec](mean)

La synchronisation est plus rapide. C'est un mensonge. Je sens que quelque chose ne va pas.

Mesure importante

La situation où la synchronisation est plus rapide. Eh bien, je ne sais pas. Vous devez le mesurer correctement. c'est tout.

Recommended Posts

Log4J Async va ralentir