6 votes

propriétés de log4j : LevelMatchFilter ne fonctionne pas

J'essayais d'acheminer ma journalisation vers deux fichiers différents : un pour les messages INFO et un autre pour les ERREURS. LevelMatchFilter semblait être la bonne solution. Malheureusement, tous les messages sont enregistrés dans mon info.log, et pas seulement les messages INFO. Une idée de ce que j'ai fait de mal ?

Voici ma configuration :

# Define the root logger with appender file
log4j.logger.com.my.class.ClassName=DEBUG, FILE, ERR, CA

# Define the info file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=info.log
log4j.appender.FILE.filter.a=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.FILE.filter.a.LevelToMatch=INFO
log4j.appender.FILE.filter.a.AcceptOnMatch=true

# Define the layout for info file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d %-5p %c - %m%n

# Define the error file appender
log4j.appender.ERR=org.apache.log4j.FileAppender
log4j.appender.ERR.File=error.log
log4j.appender.ERR.Threshold=ERROR

# Define the layout for error file appender
log4j.appender.ERR.layout=org.apache.log4j.PatternLayout
log4j.appender.ERR.layout.conversionPattern=%d %-5p %c - %m%n

log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d %-5p %c - %m%n

14voto

royalpath Points 156

Je pense que la configuration de l'apporteur de fichiers devrait ressembler à ceci :

 # Define the info file appender
log4j.appender.FILE=org.apache.log4j.FileAppender    
log4j.appender.FILE.File=info.log    
log4j.appender.FILE.Threshold=INFO    
log4j.appender.FILE.filter.a=org.apache.log4j.varia.LevelMatchFilter    
log4j.appender.FILE.filter.a.LevelToMatch=INFO    
log4j.appender.FILE.filter.a.AcceptOnMatch=true    
log4j.appender.FILE.filter.b=org.apache.log4j.varia.LevelMatchFilter    
log4j.appender.FILE.filter.b.LevelToMatch=ERROR    
log4j.appender.FILE.filter.b.AcceptOnMatch=false    
log4j.appender.FILE.filter.c=org.apache.log4j.varia.LevelMatchFilter    
log4j.appender.FILE.filter.c.LevelToMatch=FATAL    
log4j.appender.FILE.filter.c.AcceptOnMatch=false

4voto

Gabo.Egui.EC Points 41

J'ai finalement trouvé une solution (en utilisant des filtres) à un problème similaire sans créer de fichier XML externe, voici le code résultant :

log4j.rootLogger=info, R, ERROR

#### only INFO
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=FacturaElectronica.log
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R.filter.a=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.R.filter.a.LevelMin=INFO
log4j.appender.R.filter.a.LevelMax=INFO

#### only ERROR
log4j.appender.ERROR=org.apache.log4j.RollingFileAppender
log4j.appender.ERROR.File=FacturaElectronicaError.txt
log4j.appender.ERROR.MaxFileSize=500KB
log4j.appender.ERROR.MaxBackupIndex=1
log4j.appender.ERROR.layout=org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.ERROR.filter.b=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.ERROR.filter.b.LevelToMatch=ERROR
log4j.appender.ERROR.filter.b.AcceptOnMatch=true
log4j.appender.ERROR.Threshold=ERROR

-1voto

fatman Points 6840

LevelMatchFilter n'a rien à voir avec ce dont vous avez besoin.

Vous devez définir deux enregistreurs, l'un aura l'identifiant ERR et l'autre l'identifiant FILE :

log4j.logger.my.info.logger=INFO, FILE
log4j.logger.my.err.logger=ERROR, ERR

Et dans le code, vous devez fournir le nom du logger lorsque vous initialisez le logger :

static Logger logger = Logger.getLogger("my.info.logger");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X