Le guide technique présente une astuce pour remonter un incident Java par mail via le fichier log4j (typiquement en cas d'erreur fatale de l'application). Utile si vous ne disposez pas d'outil de surveillance sur la machine.
Ci dessous un exemple avec le serveur HRD Query :
Mises à jour dans le fichier query/conf/query_log.properties
- Au niveau des loggers :
# Ajout de la sortie "mail"
log4j.rootLogger = INFO, consoleappender, fileappender, mailappender
log4j.logger.com.hraccess = INFO, consoleappender, fileappender, mailappender
- Ajout de la définition de l'appender :
# appender MAIL
# Définition du niveau de trace de l'appender
log4j.appender.mailappender.Threshold=FATAL
# Définition du type d'appender
log4j.appender.mailappender=org.apache.log4j.net.SMTPAppender
# Formatage des messages
log4j.appender.mailappender.layout=org.apache.log4j.PatternLayout
log4j.appender.mailappender.layout.ConversionPattern=%d [%t] %-5p %c -%m%n
# Destinataire, Emetteur, Sujet du mail
log4j.appender.mailappender.To=admin@digix.com,john.doe@digix.com
log4j.appender.mailappender.From=nePasRepondre@digix.com
log4j.appender.mailappender.Subject=Erreur Fatale HRD Query
# Serveur de courrier de l'entreprise
log4j.appender.mailappender.SMTPHost=smtp.digix.com
- Arrêt / démarrage du serveur HRDQuery
Pour test j'ai temporairement placé les logs en mode DEBUG et j'ai paramétré un envoi en cas de message de poids ERROR :
log4j.appender.mailappender.Threshold=ERROR
(puis arrêt / démarrage)
J'ai provoqué l'apparition d'une erreur de HRD Query en insérant en MD10 MD20 des données référençant un modèle inexistant :
SQL> insert into MD10 values ('0123456789ABBHV',0,'0001-01-01',' ','0',' ','0001-01-01','F','DUMMY',0,'FR','SN00025adminSelfService@digix.comSJ00014W0W0AGE0 Step3');
SQL> insert into MD20 values ('0123456789ABBHV','00','0000',SYSDATE);
SQL> insert into MD20 values ('0123456789ABBHV','01','0001','dummy@digix.com');
SQL> insert into MD20 values ('0123456789ABBHV','03','001','GPNAME DUMMY');
SQL> commit;
Dans les logs du Query je vois le message d'erreur :
2020-09-16 10:18:03,114 [Thread-16] DEBUG - Unable to find entity <DUMMY> (Mail template). Check that the entity exists and was published
2020-09-16 10:18:03,115 [Thread-16] ERROR - QRSRV9999 Exception
java.lang.Exception: QRSRV1033 Unable to find message template (code=<DUMMY>, language=<F>, vocabulary=<FRP>)
at com.hraccess.message.description.impl.MessageDescriptionSenderImpl.buildMessage(MessageDescriptionSenderImpl.java:175)
Sur mon poste, dans ma boite mail, un message de "nePasRepondre@digix.com" libellé "Erreur Fatale HRD Query" est bien arrivé :
2020-09-16 10:18:03,115
3532 ERROR [Thread-16] qrsrv.messages - QRSRV9999 Exception
java.lang.Exception: QRSRV1033 Unable to find message
template (code=<DUMMY>, language=<F>, vocabulary=<FRP>)
at
com.hraccess.message.description.impl.MessageDescriptionSenderImpl.buildMessage(MessageDescriptionSenderImpl.java:175)
Delete du mail HR dans les tables MD**, retour du Query à INFO et configuration d'un mail en cas de message de poids FATAL dans la configuration , arrêt / démarrage de HRD Query.
Cool
RépondreSupprimerun VRAI message reçu hier :
RépondreSupprimerDe : do.not.reply@digix.com
Envoyé : dimanche 6 juin 2021 18:11
À : DiGix
Objet : v7dev HRDQuery : Exception java
2021-06-06 18:11:20,140 [main] FATAL hrjs - HRJS9001 An exception occurred while connecting to OpenHR Server com.hraccess.openhr.exception.SessionConnectionException: Error when connecting OpenHR session
com.hraccess.openhr.exception.SessionConnectionException: Error when connecting OpenHR session
at com.hraccess.openhr.impl.HRSessionImpl.connect(HRSessionImpl.java:975)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.net.ConnectException: Connexion refusée (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
...
Bonjour, merci pour ces informations.
RépondreSupprimerDans le cadre de notre personnalisation de HRaccess en université, il est prévu que l'application envoie des mails ( module formation : envoie des convocations et des validations par les responsables). J'ai bien les mail qui se constituent , j'ai les tables MD10 et MD20 qui s'alimentent. Les mails partent et les tables se vident. par contre , je n'ai aucune trace de ces envoies dans les log du qrsrv.log ou autre . comment paramétrer le serveur de query pour qu'il logue les envoie ( date, from, to , cc ,cci ) ?