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.
D'une manière ou d'une autre, c'est plus rapide qu'Async dans mon environnement.
Étant donné que les goulots d'étranglement des applications WEB sont la journalisation et la base de données, j'en voulais un rapide.
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.
Selon la documentation IPA (les membres du projet ont lu et m'ont donné des spécifications),
Le premier n'a pas fonctionné comme je l'ai essayé. Pourquoi? → Utiliser AsyncLogger
RandomAccessFile semble être rapide, donc adopté
log4j2.xml Je ne sais pas vraiment. difficile.
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>
Frappez grossièrement avec la commande ʻab` Vérifiez le serveur de fichiers ultra lent de Celeron
Requests per second: 347.96 [#/sec](mean)
Requests per second: 2830.04 [#/sec](mean)
La synchronisation est plus rapide. C'est un mensonge. Je sens que quelque chose ne va pas.
La situation où la synchronisation est plus rapide. Eh bien, je ne sais pas. Vous devez le mesurer correctement. c'est tout.
Recommended Posts