Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Plugin Tiers][Sujet Principal] JeeLog

Pour échanger sur les plugins classés en catégorie "Monitoring"
Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 04 sept. 2019, 11:45

Je veux bien STP, parce que je n'ai pas réussi du tout :)
Merci par avance ;)

Avatar de l’utilisateur
raqpub
Timide
Messages : 275
Inscription : 04 juin 2015, 08:21
Localisation : Earth

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par raqpub » 04 sept. 2019, 13:16

kiboost a écrit :
04 sept. 2019, 11:20
Ok, le soucis c'est que les messages sont en base, et pas dans un log.
Donc comme je t'avais répondu il faut intercepter les messages et en faire un log, que JeeLog puisse ensuite lire.

J'essaye de faire un truc au plus simple avec explications pour y arriver.
Cool si tu y arrives.
Sinon je tente (question de temps) le code ce WE en partant d'un scénario où actuellement je le stocke dans un tag que je m'envoie par mail 1 fois par jour et je détruis les messages de la veille dans le centre de messages.

Merci

Avatar de l’utilisateur
kiboost
Actif
Messages : 1433
Inscription : 19 déc. 2017, 15:02
Localisation : France, Bretagne

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par kiboost » 04 sept. 2019, 14:49

Alors:

1: Créer un scenario (ici [Tools][messageFilter]) avec juste un bloc CODE :

Code : Tout sélectionner

$logDir='/var/www/html/log/monLog';
$log = fopen($logDir, 'w');

$msgs = message::all();
foreach (array_reverse($msgs) as $msg) {
	$text = $msg->getDate().': '.$msg->getPlugin().': '.$msg->getMessage().'\r\n';
	fputs($log, $text);
}

fclose($log);


2: Dans Configuration, Log, ajouter une action sur message qui va lancer ce scenario à chaque message
sceen_1.jpg
sceen_1.jpg (37.41 Kio) Consulté 2923 fois

3: Créer un équipement JeeLog, et simplement lui assigner le log en question
- Voir $logDir dans le code du scenario pour changer son nom
- Le log doit exister avant de créer l'eq JeeLog, il suffit d’exécuter le scénario en ayant au moins un message dans le centre de messages
sceen_2.jpg
sceen_2.jpg (10.34 Kio) Consulté 2923 fois

=> Le JeeLog remonte bien les messages
sceen_3.jpg
sceen_3.jpg (54.94 Kio) Consulté 2923 fois

PS : Si vous videz le centre de messages, ils apparaitront toujours dans le log crée par le scenario.
Vous pouvez mettre une action avant éxécution sur le refresh du JeeLog, en lancant le scenario. Comme çà le log sera rafraichis, puis le jeelog.

;)
Dernière édition par kiboost le 04 sept. 2019, 18:17, édité 1 fois.

Prod : Jeedom Stable sur Smart | Z-wave
Synology DS1512+|Rpis Kodi|Netatmo|SNIPS-Tips|Market
JeedomV4Tips

Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 04 sept. 2019, 15:34

Super merci, je teste ça dès que possible (peut-être pas avant ce WE cependant, sauf si je craque au bureau LOL).

Avatar de l’utilisateur
raqpub
Timide
Messages : 275
Inscription : 04 juin 2015, 08:21
Localisation : Earth

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par raqpub » 05 sept. 2019, 13:36

kiboost a écrit :
04 sept. 2019, 14:49
Alors:
Merci kiboost,

En faisant (peut-être trop vite) avec ton code mon Jeelog sur le dash ne semblait pas formatté.
Du coup j'ai mis mon code (dérivé du tag + mail) :

Code : Tout sélectionner

$logDir='/var/www/html/log/monLog';
$log = fopen($logDir, 'w');

$listMessage = message::all();
foreach ($listMessage as $message){

		$msg .= "[".$message->getDate()."]";
  		$msg .= " (".$message->getPlugin().")";
  		($message->getAction() != "") ? $msg .= " (Action : ".$message->getAction().")" : null;
  		$msg .= " ".$message->getMessage()."\n";
	    fputs($log, $msg);
}

fclose($log);
Mais je regarderai pourquoi pas formatté avec ton code puisque tu montres des écrans qui prouve le contraire.

Merci encore.

Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 06 sept. 2019, 09:28

Merci beaucoup @kiboost, ça fonctionne au poil :)
Merci également @raqpub pour la mise en forme, car chez moi aussi le code précédent mettait tout à la queue-leu-leu :|

Reste plus qu'à trouver une méthode pour ne pas afficher les doublons et/ou faire le ménage dans le fichier log ...

Avatar de l’utilisateur
kiboost
Actif
Messages : 1433
Inscription : 19 déc. 2017, 15:02
Localisation : France, Bretagne

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par kiboost » 06 sept. 2019, 10:02

ATTENTION : La version beta du plugin bascule en v4

Donc si vous restez sur un Jeedom V3, passer le plugin en Stable
La Stable sera dispo à la fois en V3 et en V4

Prod : Jeedom Stable sur Smart | Z-wave
Synology DS1512+|Rpis Kodi|Netatmo|SNIPS-Tips|Market
JeedomV4Tips

Avatar de l’utilisateur
raqpub
Timide
Messages : 275
Inscription : 04 juin 2015, 08:21
Localisation : Earth

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par raqpub » 07 sept. 2019, 08:53

Jef73 a écrit :
06 sept. 2019, 09:28
Merci beaucoup @kiboost, ça fonctionne au poil :)
Merci également @raqpub pour la mise en forme, car chez moi aussi le code précédent mettait tout à la queue-leu-leu :|

Reste plus qu'à trouver une méthode pour ne pas afficher les doublons et/ou faire le ménage dans le fichier log ...
Pour le ménage, dans un scénario programmé à un horaire précis de nettoyage de monLog tu mets un code du genre :

Code : Tout sélectionner

$logDir='/var/www/html/log/monLog';
$log = fopen($logDir, 'w');
fclose($log);

Mais si ton centre de message n'est pas non plus nettoyé tu vas le récupérer à nouveau.
Perso dans mon scénario qui envoie le centre de message par mail je détruis les messages de la veille du centre de messages avec un autre bloc code après envoi du mail :

Code : Tout sélectionner

$msg = "";
$listMessage = message::all();
$hier = date("Y-m-d", strtotime("Yesterday"));
foreach ($listMessage as $message){
  $msg = strtok($message->getDate(), " ");     
  (strtok($message->getDate(), " ")  == $hier) ? $message->remove() : null;
}

$tags['#msg#'] = $msg;
$scenario->setTags($tags);
cordialement

Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 07 sept. 2019, 09:32

Ce que je ne comprends pas, c'est pourquoi le contenu du fichier n'est pas supprimé à chaque lancement du scénario puisqu'on utilise le paramètre "w" dans fopen ?

Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 07 sept. 2019, 10:05

J'ai compris le problème en mettant des sorties d'étapes un peu partout : le fichier log est bien effacé, mais la boucle inclus l'écriture dans le log, ce qui n'est pas bon car ça cumule chaque message avec les précédents.

En fait, il faut mettre la ligne « fputs($log, $msg); » juste après la boucle foreach. Comme ça quoi :

Code : Tout sélectionner

$listMessage = message::all();
$msg = "";
foreach ($listMessage as $message){
		$msg .= "[".$message->getDate()."]";
  		$msg .= " (".$message->getPlugin().")";
  		($message->getAction() != "") ? $msg .= " (Action : ".$message->getAction().")" : null;
  		$msg .= " ".$message->getMessage()."\n";
}
fputs($log, $msg);
fclose($log);

Avatar de l’utilisateur
raqpub
Timide
Messages : 275
Inscription : 04 juin 2015, 08:21
Localisation : Earth

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par raqpub » 07 sept. 2019, 11:17

Oui comme le scénario est sollicité à chaque message entrant il faut effectivement sortir cette ligne de la boucle.
Bien vu.

Avatar de l’utilisateur
raqpub
Timide
Messages : 275
Inscription : 04 juin 2015, 08:21
Localisation : Earth

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par raqpub » 07 sept. 2019, 11:28

J'ai modifié le code d'injection dans monLog car mes messages n'étaient pas dans le bon ordre chronologique dans le widget Jeelog (1 ière ligne = dernier événement) :

Code : Tout sélectionner

$logDir='/var/www/html/log/monLog';
$log = fopen($logDir, 'w');

$listMessage = message::all();
$listReversed = array_reverse($listMessage);
foreach ($listReversed as $message){

		$msg .= "[".$message->getDate()."]";
  		$msg .= " (".$message->getPlugin().")";
  		($message->getAction() != "") ? $msg .= " (Action : ".$message->getAction().")" : null;
  		$msg .= " ".$message->getMessage()."\n";
}
fputs($log, $msg);
fclose($log);
Dernière édition par raqpub le 07 sept. 2019, 18:34, édité 1 fois.

Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 07 sept. 2019, 12:01

Oui j'avais fait la même chose 😁

Jef73
Timide
Messages : 366
Inscription : 27 déc. 2017, 10:41
Localisation : Nantes

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par Jef73 » 08 sept. 2019, 06:46

Un peu de cosmétique pour que ce soit plus facile à lire quand il y a des messages sur plusieurs lignes :

Code : Tout sélectionner

$logDir='/var/www/html/log/message-center';
$log = fopen($logDir, 'w');

$listMessage = message::all();
$msg = "";
foreach (array_reverse($listMessage) as $message){	// "array-reverse" sert à lire le log à l'envers pour afficher le plus récent en haut du plugin
  		($message->getAction() != "") ? $msg .= " (Action : ".$message->getAction().")" : null;
  		$msg .= "- ".$message->getMessage()."\n";
		$msg .= "[".$message->getDate()."] ";
  		$msg .= strtoupper($message->getPlugin())." :\n\n";
}
fputs($log, $msg);
fclose($log);

sfl
Timide
Messages : 116
Inscription : 24 juil. 2014, 00:04
Localisation : 31

Re: [Plugin Tiers][Sujet Principal] JeeLog

Message par sfl » 10 déc. 2019, 12:13

Bonjour à tous, Bonjour Kiboost,

j'ai un pb pour afficher le log de mon scénario chauffage.
Le Jeelog n'indique que le lancement de la programmation pourtant j'ai bien coché afficher le detail du scenario.

Je souhaite afficher dans l objet jeelog le detail des actions et des tests du scenario comme c'est dispo dans l'icone log du scenario.

J'ai relu la doc et il n'y a que la case détail du scenario à cocher d'apres moi.

Une idée ?

je vous remercie par avance de votre aide,
Sfl
Jeedom en prod via chroot et MariaDB
Jeedom slave sur RPI via nfs

Répondre

Revenir vers « [Catégorie] Monitoring »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 14 invités