# [SCRIPT] Visualiser ses elogs, prog python/gtk

## synss

c'est plus qu'un script, c'est un programme ecrit en python et utilisant (py)gtk qui permet d'afficher le contenu des elogs (portage 2.1) d'une maniere plus lisible que "less". On peut egalement filtrer l'affichage et cacher les informations pas tres interessantes comme "unpack" et se concentrer sur le reste. Une fois lu, l'elog peut tout simplement etre efface d'un simple click sur l'icone adequate. Pour ceux qui ne veulent pas lire, on peut aussi effacer tous les elogs d'un click sur le bouton a cote.

pygtk est necessaire 

dispo sur l'overlay sunrise

```
emerge layman 

layman -a sunrise

emerge elogviewer
```

bugs, "feature requests" et commentaires bienvenus.

Je vais sans doute continuer a travailler dessus un peu mais tout ce que je voulais est la. Et c'est mon premier programme en python  :Very Happy: .

----------

## titoucha

Je teste ton programme et à première vue il est pas mal dutout, merci beaucoup.

----------

## synss

Merci a toi ! j'apprecie vraiment tout commentaire (et surtout positif  :Wink: ) parce que j'ai qd mm passe un certain nombre de nuits sur ce prog (une semaine en gros) et c'est agreable de savoir que cela peut servir a qq1 d'autre que moi!

Maintenant, je travaille sur son orientation objet : il faut bien que j'apprenne qqc aussi en faisant cela. Et ensuite je remet mon algo pour lire les log normaux. J'ai pense qu'un bouton pour eliminer les doublons peut etre utile aussi. Et dans ma version "log portage 2.0" effacer ceux qui ont vides...

Mais si jamais qq1 a une idee d'un truc a ajouter/modifier au prog en ligne, un patch  :Wink:  ou un commentaire et je vois ce que je peux faire.

----------

## yoyo

 *synss wrote:*   

> Mais si jamais qq1 a une idee d'un truc a ajouter/modifier au prog en ligne, un patch  ou un commentaire et je vois ce que je peux faire.

 Et bien je te prends au mot. Je sais que ça n'est pas forcément la partie la plus intéressante mais tu n'y couperas pas : il manque simplement une aide (en ligne ou par un manuel). En gros, à la première exécution, elogviewer affiche un 

```
~ # ./elogviewer.py 

Traceback (most recent call last):

  File "/root/elogviewer.py", line 12, in ?

    os.chdir( "./elog" )
```

et impossible de savoir à quoi il correspond à moins d'aller voir dans le code et de connaître un minimum python.

Il faut rendre accessible à tous ce genre de programme qui est bien utile, agréable et facile d'utilisation.

Peut-être également ajouter une partie test/création des données nécessaires au bon fonctionnement avec quelques infos sur la sortie standard (du style "vous n'avez pas installé pygtk", "votre version de pygtk est obsolète",  "Elogviewer nécessite une version de portage >=2.1.* "Le répertoire "elog" n'existe pas, où voulez-vous le créer ? (par défaut : [/var/elog]") enfin ce genre de chose.

En tout cas beau boulot !

Enjoy !

Yoyo

----------

## PabOu

J'ai de gros doutes, mais y a-t-il une chance de voir cet outil fonctionner en réseau ? :P Vu que j'ai plusieurs gentoo, et certaines sont headless, ce serait bien de pouvoir faire tout ca sur une seule machine.

----------

## synss

Yoyo Ah oui... une aide, effectivement c'est une bonne idee ! Je n'ai vraiment pas l'habitude de programmer "grand public" (plutot scientifique, le code doit etre a peu pret lisible et rapide... c'est tout) J'aurais voulu des tooltips mais ca n'a pas l'air de vouloir fonctionner... J'ai modifie l'icone "About" en "Help" et ajoute un peu de texte, ca doit etre suffisant...

PabOu en reseau... moi, je bidouille sur mon laptop alors je ne suis pas trop sur, cependant, ce que le programme fait, c'est charger des fichiers texte et les afficher de maniere un peu plus jolie en gros. Donc si tous tes fichiers "elogs" sont dans un repertoire accessible depuis ta machine favorite, tu peux les lire avec mon prog.

Le probleme, c'est que si chaque machine sauvegarde ses elogs dans un repertoire different. elogviewer va regarder dans la variable PORT_LOGDIR si elle existe dans ton /etc/make.conf et dans /var/log/portage/ autrement (merci Yoyo) puis cd ./elog, donc tu ne verras que les elogs de la machine sur laquelle tu es.

Conclusion le truc pour voir les elog dans un repertoire (presque) au choix c'est de lancer le prog avec

```
PORT_LOGDIR="/path/to/elogdir/.." ./elogviewer.py
```

 note que le programme echoira toujours un cd ./elog au demarrage.

----------

## yoyo

 :Very Happy:   En voila une chose qu'elle est bonne !

Pour ce qui est de l'utilisation de ce soft via le réseau, je ne sais pas comment PabOu s'y prend mais via ssh avec compression et X forwarding ça devrait le faire. Mais ça implique qu'il y ait un serveur X (sans client) sur ses machines headless.

Si ça n'est pas le cas alors reste la solution d'un montage nfs (ou autre) et d'une option en ligne de commande à ajouter à ton elogviewer permettant de définir le répertoire où se trouvent les logs de portage.

Mes 0.02 cents

EDIT : le module elog n'est pas vraiment au point pour l'instant : 

```
~ $ ll /var/log/portage/

total 123K

drwxrws---  3 portage portage   15 jun  1 10:41 .

drwxr-xr-x 15 root    root      37 mai 31 16:16 ..

-rw-r--r--  1 root    portage  14K jun  1 10:04 9442-portage-2.1_rc3-r3.log

-rw-r--r--  1 root    portage 7,4K jun  1 10:05 9443-gentoolkit-0.2.2.log

-rw-r--r--  1 root    portage    0 jun  1 10:05 9443-portage-2.1_rc3-r2.log

-rw-r--r--  1 root    portage 1,7K jun  1 10:04 9443-portage-2.1_rc3-r3.log

-rw-r--r--  1 root    portage  514 jun  1 10:05 9444-gentoolkit-0.2.2.log

-rw-r--r--  1 root    portage   77 jun  1 10:05 9444-gentoolkit-0.2.2_rc1.log

-rw-r--r--  1 root    portage  89K jun  1 10:40 9444-xmame-0.106.log

-rw-r--r--  1 root    portage 1,4K jun  1 10:41 9445-fvwm-crystal-3.0.4.log

-rw-r--r--  1 root    portage    0 jun  1 10:41 9445-xmame-0.105.log

-rw-r--r--  1 root    portage  509 jun  1 10:40 9445-xmame-0.106.log

-rw-r--r--  1 root    portage    0 jun  1 10:41 9446-fvwm-crystal-3.0.3.log

-rw-r--r--  1 root    portage  441 jun  1 10:41 9446-fvwm-crystal-3.0.4.log

drwxrwx---  2 portage portage    3 jun  1 10:05 elog

 ~ $ ll /var/log/portage/elog/

total 2,0K

drwxrwx--- 2 portage portage  3 jun  1 10:05 .

drwxrws--- 3 portage portage 15 jun  1 10:41 ..

-rw-r--r-- 1 root    root    68 jun  1 10:05 app-portage:gentoolkit-0.2.2:20060601-080549.log
```

Ou c'est moi qui n'est pas bien paramétré le module ...

----------

## synss

Yoyo, les fichiers dans log sont tres petit ou vides... ou pas interessants...

les elogs ne rapportent que le contenu des commandes einfo, ewarn, etc. alors que les fichiers logs sauvegardent tout ce qui apparait a l'ecran lors des emerges.

J'ai un algoritme tout simple pour parser les logs mais maintenant, c'est "fete de la biere" a Erlangen (Allemagne) ou je vis, alors je passe mes nuits a autre chose que programmer... enfin si tu connais python et que cela t'interesse, je peux popier/poller ca ici et... Prost !

oui enfin..............

----------

## synss

elogviewer est en train de grimper ds l'arbre, il est maintenant dispo sur l'overlay semi-officiel sunrise

[code]emerge layman

layman -f

layman -a sunrise

emerge elogviewer[/b]

Toutes les mises a jours seront faites la (+ bugzilla).

----------

## geekounet

Ça a l'air sympa, mais ya un équivalent en ncurses ? Plus pratique sur une machine sans X ...  :Wink: 

----------

## synss

J'ai juste fini une nouvelle version dispo sur sourceforge.net http://sourceforge.net/projects/elogviewer et Jeremy_Z se joint a moi sur le meme site. Il a porte mon prog pour KDE, qu'il en soit remercie. Tout cela devrait etre disponible un de ces jours via emerge. Et l'est deja sur sunrise.

Pour ceux qui preferent utiliser la console:

eread, ecrit par dberkholz, a ete inclus dans gentoolkit-0.2.3_pre2

elogv, ncurse, est egalement dispo sur sunrise

Mais les deux derniers sont des projets independants. (Ce qui ne veut pas dire que c'est mal, juste qu'ils ne me mentionnent pas  :Crying or Very sad:  .)

V-Li a aussi participe en encourageant et en poussant tout ce monde, dont moi, et est le dev qui a colle tout ca ds sunrise. Ich danke dir noch mal, V-Li.

----------

