Suppression automatique après un scenario d'un log

Bonjour,

Lors d’une erreur il y a un log qui se créé, a chaque log j’exécute un scenario avec les tag #subject# et #plugin#, si l’erreur et connu peut être réparer via une action (reboot ou autre) alors j’exécute un scenario pour l’auto réparer sans action humaine.

Exemple de situation:
J’ai pas mal de problème avec un arduino Mega qui plante régulièrement du coup quand je vois dans mon log « ERREUR DE CONNECTION (192.168..:8000) : 110 - Connection timed out » j’exécute un scenario qui reboot de sa prise commandée.

Sauf que le log est toujours et que si je le supprime pas de façon automatique au prochain plantage ca ne me lancera pas mon scenario car ça fait juste une Occurrences en plus.

Je cherche donc un moyen de supprimer uniquement la ligne dans les log

2021-07-27 10:53:15	jeedouino	ERREUR DE CONNECTION (192.168.*.*:8000) : 110 - Connection timed out

y a t-il une solution ?

Cordialement,

Bonjour,

Je ne comprend déjà pas la première phrase:

Ce n’est pas vrai, il y a toujours un log avec un scénario.

Ni la deuxième phrase

A chaque log de quoi? il n’est pas possible d’effectuer une action lors de l’écriture dans un log.

Dans quel log?

bref rien n’est clair dans cette demande.

désolé je parle de log cependant je devrais plutot dir centre de message.
Voici mon cheminement :
j’actionne un scenario lors d’un message :

Je récupère l’objet du scenario dans une variable.
Si je connais la solution alors j’exécute une action

L’objectif et de supprimer a la fin de l’action le message dasn le centre de message :

est-ce un peux plus claire ? :slight_smile:

Ah « message », bien sur.
oui j’ai compris maintenant.

Pour gérer les messages, c’est la class message du core

Donc là faudra que tu regardes en fonction de tes cas, par exemple pour retirer tous les messages d’un plugin, donc dans un bloc code:

message::removeAll('pluginid'); //pluginid correspond à l'info dans la colonne "source" à l'écran

si les messages ont reçu un id de regroupement (ce qui est rarement le cas), cela permet de ne retirer que ces messages là et pas tous, exemple:

message::removeAll('pluginid', 'CONNECTION_ERROR'); // CONNECTION_ERROR est un exemple, à vérifier lors de la génération du log dans le plugin concerné, si Id reçu lors de l'écriture du log il sera transmis au message par le core

sinon il faut « jouer » avec la class message pour récupérer les messages et filtrer au cas par cas:

message::all(); // pour récupérer tous les messages 
message::byPlugin('pluginid'); //pour un plugin particulier
...

La class message: API Documentation

2 « J'aime »

Parfait merci de ta réponse précise est rapide :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.