Articles

11 octobre 2023

Corriger les messages "QRKRN2023 Error while parsing data" ou les filtrer avec log4j StringMatchFilter

Vous avez peut être rencontré dans les logs de HRD Query ces messages :
WARN - QRKRN2023 Error while parsing date 58,50
ou
QRKRN3024 Element /RPT/GRP[@level='...']/.../DTL/FLD[@id='...'] has no matching element in the datamodel

Noter qu’il ne faut pas lire « QRKRN2023 Error while parsing date » mais « Error while parsing data » (faute de typo)

Ces dizaines de milliers de messages encombrent parfois les fichiers de logs et provoquent une surcharge d’écriture sur disque. D’autre part ces fichiers log étant à rotation (5 fichiers de 5 mo en standard) - leur remplissage rapide peut faire perdre des messages d’erreur importants plus anciens.

Pour supprimer ces messages il faut corriger les traitements d'édition concernés

En l’occurrence un champ numérique
  • Ne doit pas contenir d’espaces en début
  • Doit avoir un séparateur de décimales sous la forme d’un « . » et non d’une « , »
Dans l’attente d’une correction des éditions HR - et à titre de « solution temporaire », il peut être utile de mettre en place un filtrage des messages par log4j

Dans $SIGACS/query/conf/query_log.properties ajouter les lignes en rouge suivantes, puis redémarrer le serveur de Query batch :

# ========================
# logs configuration file
# ========================

#
# OFF < FATAL < ERROR < WARN < INFO < DEBUG < ALL.
#

log4j.rootLogger = info, consoleappender, fileappender
log4j.logger.com.hraccess = INFO, consoleappender, fileappender
log4j.additivity.com.hraccess = false

# =================================================================================

# By default, the activation of the debug mode causes :
# - The generation of EditingFileConnectorXXXXX.zip, BatchEditingConnectorXXXXX.zip
#   files in the logs directory.
# - The persistence of LYTXXXXX.tmp directories in the work directory
#
# To avoid this behaviour while activating the debug mode uncomment either of
# the following lines.
# =================================================================================

 

#log4j.logger.com.hraccess.log.hrjs.workfiles=off
#log4j.logger.com.hraccess.log.qrkrn.workfiles=off

 

# CONSOLE
log4j.appender.consoleappender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleappender.target=System.out
log4j.appender.consoleappender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleappender.layout.ConversionPattern=%d{ISO8601} %X{runtime.context} %-5p %c{1} - %m%n

 

# MAIN LOG FILE
log4j.appender.fileappender=org.apache.log4j.RollingFileAppender
log4j.appender.fileappender.File=${hrjmods.log.dir}/qrsrv.log
log4j.appender.fileappender.MaxFileSize=5MB
log4j.appender.fileappender.MaxBackupIndex=5
log4j.appender.fileappender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileappender.layout.ConversionPattern=%d{ISO8601} %X{runtime.context} %-5p - %m%n

# Filtres pour laisser passer QRKRN2023, QRKRN3024 puis autoriser DEBUG INFO WARN ERROR FATAL
log4j.appender.fileappender.filter.01=org.apache.log4j.varia.StringMatchFilter
log4j.appender.fileappender.filter.01.StringToMatch=QRKRN2023
log4j.appender.fileappender.filter.01.AcceptOnMatch=false
log4j.appender.fileappender.filter.02=org.apache.log4j.varia.StringMatchFilter
log4j.appender.fileappender.filter.02.StringToMatch=QRKRN3024
log4j.appender.fileappender.filter.02.AcceptOnMatch=false
log4j.appender.fileappender.filter.11=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.11.levelToMatch=DEBUG
log4j.appender.fileappender.filter.11.AcceptOnMatch=true
log4j.appender.fileappender.filter.12=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.12.levelToMatch=INFO
log4j.appender.fileappender.filter.12.AcceptOnMatch=true
log4j.appender.fileappender.filter.13=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.13.levelToMatch=WARN
log4j.appender.fileappender.filter.13.AcceptOnMatch=true
log4j.appender.fileappender.filter.14=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.14.levelToMatch=ERROR
log4j.appender.fileappender.filter.14.AcceptOnMatch=true
log4j.appender.fileappender.filter.15=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.fileappender.filter.15.levelToMatch=FATAL
log4j.appender.fileappender.filter.15.AcceptOnMatch=true
# Filtre pour bloquer tous les messages qui ne sont pas déjà  autorisés
log4j.appender.fileappender.filter.20=org.apache.log4j.varia.DenyAllFilter

 

# THREAD APPENDER
log4j.appender.threadappender=com.hraccess.logging.ThreadFileAppender
log4j.appender.threadappender.Directory=${hrjmods.log.dir}
log4j.appender.threadappender.layout=org.apache.log4j.PatternLayout
log4j.appender.threadappender.layout.ConversionPattern=%d{ISO8601} %X{runtime.context} %-5p - %m%n


Aucun commentaire:

Enregistrer un commentaire