Thomas wrote:c'est que "ce n'est pas grave" de ne pas écrire de fichiers de log, même
si on a dit dans le fichier de config qu'on en voulait,
donc en cas de pb quelconque avec le fichier, je me contente de stderr
plus éventuellement dialogue GUI.
Me semble sensé.
Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
> c'est que "ce n'est pas grave" de ne pas écrire de fichiers de log, même
> si on a dit dans le fichier de config qu'on en voulait,
> donc en cas de pb quelconque avec le fichier, je me contente de stderr
> plus éventuellement dialogue GUI.
Me semble sensé.
Thomas wrote:c'est que "ce n'est pas grave" de ne pas écrire de fichiers de log, même
si on a dit dans le fichier de config qu'on en voulait,
donc en cas de pb quelconque avec le fichier, je me contente de stderr
plus éventuellement dialogue GUI.
Me semble sensé.
In article ,
Stéphane CARPENTIER wrote:Il n'y a rien de compliqué. Si tu balances tous tes logs sur ta sortie
d'erreur, tu dis Í l'utilisateur de tapper la commande
« $> monsuperprogramme 2> fichier.log »
et de t'envoyer le fichier « fichier.log » quand il a reproduit le bug.
et pour Windows,
je vais sur un forum Windows pour demander comment faire, et ensuite je
transmet Í l'utilisateur la réponse qu'on me donne sans l'avoir
pratiquée.
ou alors je lui répond "vas sur un forum Windows pour demander comment
on fait ça, moi je sais pas".
En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
rapporté.
je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
de nécessité Í cet endroit.
et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
pourra tjr l'améliorer plus tard.
Pour la séparation de stdout et stderr, c'est pas forcément très utile.
Il me semble préférable de tout mettre au même endroit avec un niveau de
log qui contient un tag et qui est paramétrable. Par exemple, tu mets du
DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un niveau
d'activation faible en temps normal pour avoir moins de lignes et tu
affiches tout quand tu veux comprendre ce qu'il se passe.
j'aime bcp l'idée :-)
je ne sais pas si c'est facile Í faire très rapidement, parce que :
- il faut que je définisse des règles pour catégoriser les logs
(auj dans mon code les logs ne sont divisés qu'en 2 catégories : DEBUG
et ERROR)
(y a-t-il des règles pour déterminer la catégorie de chaque message ?)
Mon idée, c'est que tu te programmes une fonction genre
« sendlog(niveau,message) »Et c'est ta fonction sendlog qui va choisir quoi faire de tes logs :
poubelle si c'est pas le bon niveau de logs et envoi dans le cas
contraire.
ok, je comprend mieux :-)
je croyais que tu disais de mettre un tag dans le fichier de log, pour
pouvoir ensuite le relire en filtrant (par ex avec grep), et
éventuellement le répartir en plusieurs fichiers par la suite.
en fait tu dis juste de sélectionner ce qu'on affiche, et que c'est
suffisant au niveau de l'ergonomie pour ne générer qu'un seul fichier de
log.
(dis moi si je me trompe Í nouveau)
est-ce que ça convient, d'avoir tous ces tags qui s'affichent dans le
terminal quand on est en CLI (par ex au moment d'indiquer que les
arguments sont mauvais) ?
Si c'est une application qui tourne dans un terminal, faut pas que les
logs la rendent inutilisable.
mais si j'ai bien compris, les tags ne sont pas censés se retrouver sur
l'affichage. donc tout va bien :-)
Par exemple, la commande find, si tu
cherches toto.txt avec « find / -name toto.txt » en tant que simple
utilisateur, tu vas avoir l'écran rempli d'erreurs des répertoires que
tu n'as pas le droit de lire. et s'il y a une réponse positive, tu ne
vas pas la voir. Alors tu vas plutÍ´t faire ta recherche avec un
« find / -name toto.txt 2> /dev/null ».
(je n'avais pas encore eu le temps de demander comment faire ça,
merci :-)) )
In article <slrnsl18t8.29t.sc@scarpet42p.localdomain>,
Stéphane CARPENTIER <sc@fiat-linux.fr> wrote:
Il n'y a rien de compliqué. Si tu balances tous tes logs sur ta sortie
d'erreur, tu dis Í l'utilisateur de tapper la commande
« $> monsuperprogramme 2> fichier.log »
et de t'envoyer le fichier « fichier.log » quand il a reproduit le bug.
et pour Windows,
je vais sur un forum Windows pour demander comment faire, et ensuite je
transmet Í l'utilisateur la réponse qu'on me donne sans l'avoir
pratiquée.
ou alors je lui répond "vas sur un forum Windows pour demander comment
on fait ça, moi je sais pas".
En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
rapporté.
je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
de nécessité Í cet endroit.
et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
pourra tjr l'améliorer plus tard.
>> Pour la séparation de stdout et stderr, c'est pas forcément très utile.
>> Il me semble préférable de tout mettre au même endroit avec un niveau de
>> log qui contient un tag et qui est paramétrable. Par exemple, tu mets du
>> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un niveau
>> d'activation faible en temps normal pour avoir moins de lignes et tu
>> affiches tout quand tu veux comprendre ce qu'il se passe.
>
> j'aime bcp l'idée :-)
>
> je ne sais pas si c'est facile Í faire très rapidement, parce que :
> - il faut que je définisse des règles pour catégoriser les logs
> (auj dans mon code les logs ne sont divisés qu'en 2 catégories : DEBUG
> et ERROR)
(y a-t-il des règles pour déterminer la catégorie de chaque message ?)
Mon idée, c'est que tu te programmes une fonction genre
« sendlog(niveau,message) »
Et c'est ta fonction sendlog qui va choisir quoi faire de tes logs :
poubelle si c'est pas le bon niveau de logs et envoi dans le cas
contraire.
ok, je comprend mieux :-)
je croyais que tu disais de mettre un tag dans le fichier de log, pour
pouvoir ensuite le relire en filtrant (par ex avec grep), et
éventuellement le répartir en plusieurs fichiers par la suite.
en fait tu dis juste de sélectionner ce qu'on affiche, et que c'est
suffisant au niveau de l'ergonomie pour ne générer qu'un seul fichier de
log.
(dis moi si je me trompe Í nouveau)
> est-ce que ça convient, d'avoir tous ces tags qui s'affichent dans le
> terminal quand on est en CLI (par ex au moment d'indiquer que les
> arguments sont mauvais) ?
Si c'est une application qui tourne dans un terminal, faut pas que les
logs la rendent inutilisable.
mais si j'ai bien compris, les tags ne sont pas censés se retrouver sur
l'affichage. donc tout va bien :-)
Par exemple, la commande find, si tu
cherches toto.txt avec « find / -name toto.txt » en tant que simple
utilisateur, tu vas avoir l'écran rempli d'erreurs des répertoires que
tu n'as pas le droit de lire. et s'il y a une réponse positive, tu ne
vas pas la voir. Alors tu vas plutÍ´t faire ta recherche avec un
« find / -name toto.txt 2> /dev/null ».
(je n'avais pas encore eu le temps de demander comment faire ça,
merci :-)) )
In article ,
Stéphane CARPENTIER wrote:Il n'y a rien de compliqué. Si tu balances tous tes logs sur ta sortie
d'erreur, tu dis Í l'utilisateur de tapper la commande
« $> monsuperprogramme 2> fichier.log »
et de t'envoyer le fichier « fichier.log » quand il a reproduit le bug.
et pour Windows,
je vais sur un forum Windows pour demander comment faire, et ensuite je
transmet Í l'utilisateur la réponse qu'on me donne sans l'avoir
pratiquée.
ou alors je lui répond "vas sur un forum Windows pour demander comment
on fait ça, moi je sais pas".
En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
rapporté.
je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
de nécessité Í cet endroit.
et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
pourra tjr l'améliorer plus tard.
Pour la séparation de stdout et stderr, c'est pas forcément très utile.
Il me semble préférable de tout mettre au même endroit avec un niveau de
log qui contient un tag et qui est paramétrable. Par exemple, tu mets du
DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un niveau
d'activation faible en temps normal pour avoir moins de lignes et tu
affiches tout quand tu veux comprendre ce qu'il se passe.
j'aime bcp l'idée :-)
je ne sais pas si c'est facile Í faire très rapidement, parce que :
- il faut que je définisse des règles pour catégoriser les logs
(auj dans mon code les logs ne sont divisés qu'en 2 catégories : DEBUG
et ERROR)
(y a-t-il des règles pour déterminer la catégorie de chaque message ?)
Mon idée, c'est que tu te programmes une fonction genre
« sendlog(niveau,message) »Et c'est ta fonction sendlog qui va choisir quoi faire de tes logs :
poubelle si c'est pas le bon niveau de logs et envoi dans le cas
contraire.
ok, je comprend mieux :-)
je croyais que tu disais de mettre un tag dans le fichier de log, pour
pouvoir ensuite le relire en filtrant (par ex avec grep), et
éventuellement le répartir en plusieurs fichiers par la suite.
en fait tu dis juste de sélectionner ce qu'on affiche, et que c'est
suffisant au niveau de l'ergonomie pour ne générer qu'un seul fichier de
log.
(dis moi si je me trompe Í nouveau)
est-ce que ça convient, d'avoir tous ces tags qui s'affichent dans le
terminal quand on est en CLI (par ex au moment d'indiquer que les
arguments sont mauvais) ?
Si c'est une application qui tourne dans un terminal, faut pas que les
logs la rendent inutilisable.
mais si j'ai bien compris, les tags ne sont pas censés se retrouver sur
l'affichage. donc tout va bien :-)
Par exemple, la commande find, si tu
cherches toto.txt avec « find / -name toto.txt » en tant que simple
utilisateur, tu vas avoir l'écran rempli d'erreurs des répertoires que
tu n'as pas le droit de lire. et s'il y a une réponse positive, tu ne
vas pas la voir. Alors tu vas plutÍ´t faire ta recherche avec un
« find / -name toto.txt 2> /dev/null ».
(je n'avais pas encore eu le temps de demander comment faire ça,
merci :-)) )
Le 27-09-2021, Thomas a écrit :In article ,
Stéphane CARPENTIER wrote:Il n'y a rien de compliqué. Si tu balances tous tes logs sur ta sortie
d'erreur, tu dis Í l'utilisateur de tapper la commande
« $> monsuperprogramme 2> fichier.log »
et de t'envoyer le fichier « fichier.log » quand il a reproduit le bug.
et pour Windows,
je vais sur un forum Windows pour demander comment faire, et ensuite je
transmet Í l'utilisateur la réponse qu'on me donne sans l'avoir
pratiquée.
ou alors je lui répond "vas sur un forum Windows pour demander comment
on fait ça, moi je sais pas".
Oui, bon, alors effectivement, Windows, je ne connais pas, je ne sais
pas comment ça marche et c'est pas mon problème. Mes réponses sont
orientées unix. Dans les grandes lignes ça doit pouvoir s'adapter sur
Windows mais je ne sais pas comment.
En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
rapporté.
je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
de nécessité Í cet endroit.
et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
pourra tjr l'améliorer plus tard.
Ce que je veux dire, c'est que tu peux apporter une nouvelle
fonctionnalité Í ton programme et que cette fonctionnalité va nécessiter
va nécessiter 10Go d'espace disque libre et que du coup, ça peut devenir
important de se mettre Í le logguer.
>> Pour la séparation de stdout et stderr, c'est pas forcément très utile.
>> Il me semble préférable de tout mettre au même endroit avec un niveau de
>> log qui contient un tag et qui est paramétrable. Par exemple, tu mets du
>> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un niveau
>> d'activation faible en temps normal pour avoir moins de lignes et tu
>> affiches tout quand tu veux comprendre ce qu'il se passe.
>
> j'aime bcp l'idée :-)
>
> je ne sais pas si c'est facile Í faire très rapidement, parce que :
> - il faut que je définisse des règles pour catégoriser les logs
> (auj dans mon code les logs ne sont divisés qu'en 2 catégories : DEBUG
> et ERROR)
(y a-t-il des règles pour déterminer la catégorie de chaque message ?)
Ce que je te dis, c'est que c'est toi qui voit ce qui est important pour
ton programme. Est-ce que c'est une erreur grave qui l'empêche de
tourner ? Est-ce que c'est juste une précision du fichier de conf que tu
as choisis ? Est-ce que c'est parce que ton programme a un comportement
bizarre alors il faut tout logguer pour comprendre ce qu'il fait
vraiment ligne par ligne ?
Mon idée, c'est que tu te programmes une fonction genre
« sendlog(niveau,message) »Et c'est ta fonction sendlog qui va choisir quoi faire de tes logs :
poubelle si c'est pas le bon niveau de logs et envoi dans le cas
contraire.
ok, je comprend mieux :-)
je croyais que tu disais de mettre un tag dans le fichier de log, pour
pouvoir ensuite le relire en filtrant (par ex avec grep), et
éventuellement le répartir en plusieurs fichiers par la suite.
Tu as les deux en fait. À partir du moment o͹ tu reçois le niveau de log
pour savoir s'il faut l'envoyer ou pas, tu mets le tag qui va bien dans
tes logs. Quand tu es en mode debug, ça permet de chercher les erreurs
graves au milieu des centaines de lignes d'information.
De même qu'il faut mettre l'heure Í laquelle tu loggues le message. Le
tag et l'heure ne sont pas plus compliqués Í ajouter mais tu en verras
l'utilité le jour o͹ tu auras des milliers de lignes de log Í analyser.
en fait tu dis juste de sélectionner ce qu'on affiche, et que c'est
suffisant au niveau de l'ergonomie pour ne générer qu'un seul fichier de
log.
(dis moi si je me trompe Í nouveau)
Ce que je dis, c'est qu'en faisant les deux, tu peux tout mettre dans le
même fichier de logs. Parce que des fois, tu as un log normal informatif
qui arrive systématiquement juste avant une erreur grave et de faire la
corrélation entre les deux va être dur si tu as des fichiers différents.
En temps normal, tu regardes juste si tu as des erreurs pour savoir si
tout est normal. En débuggage, tu cherches tes erreurs et tu lis le
contexte autour.
> est-ce que ça convient, d'avoir tous ces tags qui s'affichent dans le
> terminal quand on est en CLI (par ex au moment d'indiquer que les
> arguments sont mauvais) ?
Si c'est une application qui tourne dans un terminal, faut pas que les
logs la rendent inutilisable.
mais si j'ai bien compris, les tags ne sont pas censés se retrouver sur
l'affichage. donc tout va bien :-)
En quoi ça te gêne d'afficher les tags ? C'est pas plus compliqué, c'est
juste un mot défini Í rajouter. Et lorsque les sorties sont mélangées,
c'est la seule façon de voir rapidement si c'est de l'affichage normal
ou une alerte Í traiter.
Par exemple, la commande find, si tu
cherches toto.txt avec « find / -name toto.txt » en tant que simple
utilisateur, tu vas avoir l'écran rempli d'erreurs des répertoires que
tu n'as pas le droit de lire. et s'il y a une réponse positive, tu ne
vas pas la voir. Alors tu vas plutÍ´t faire ta recherche avec un
« find / -name toto.txt 2> /dev/null ».
Pour le /dev/null c'est parce que tu ne veux mettre les messages
d'erreurs directement Í la poubelle.
Ce que je te donne comme réponses, ce sont surtout les
questions Í te poser pour comprendre l'impact de ce que tu vas mettre en
place.
Le 27-09-2021, Thomas <fantome.forums.tDeContes@free.fr.invalid> a écrit :
> In article <slrnsl18t8.29t.sc@scarpet42p.localdomain>,
> Stéphane CARPENTIER <sc@fiat-linux.fr> wrote:
>
>> Il n'y a rien de compliqué. Si tu balances tous tes logs sur ta sortie
>> d'erreur, tu dis Í l'utilisateur de tapper la commande
>> « $> monsuperprogramme 2> fichier.log »
>> et de t'envoyer le fichier « fichier.log » quand il a reproduit le bug.
>
> et pour Windows,
> je vais sur un forum Windows pour demander comment faire, et ensuite je
> transmet Í l'utilisateur la réponse qu'on me donne sans l'avoir
> pratiquée.
> ou alors je lui répond "vas sur un forum Windows pour demander comment
> on fait ça, moi je sais pas".
Oui, bon, alors effectivement, Windows, je ne connais pas, je ne sais
pas comment ça marche et c'est pas mon problème. Mes réponses sont
orientées unix. Dans les grandes lignes ça doit pouvoir s'adapter sur
Windows mais je ne sais pas comment.
>> En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
>> rapporté.
>
> je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
> de nécessité Í cet endroit.
> et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
> pourra tjr l'améliorer plus tard.
Ce que je veux dire, c'est que tu peux apporter une nouvelle
fonctionnalité Í ton programme et que cette fonctionnalité va nécessiter
va nécessiter 10Go d'espace disque libre et que du coup, ça peut devenir
important de se mettre Í le logguer.
>> >> Pour la séparation de stdout et stderr, c'est pas forcément très utile.
>> >> Il me semble préférable de tout mettre au même endroit avec un niveau de
>> >> log qui contient un tag et qui est paramétrable. Par exemple, tu mets du
>> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un niveau
>> >> d'activation faible en temps normal pour avoir moins de lignes et tu
>> >> affiches tout quand tu veux comprendre ce qu'il se passe.
>> >
>> > j'aime bcp l'idée :-)
>> >
>> > je ne sais pas si c'est facile Í faire très rapidement, parce que :
>> > - il faut que je définisse des règles pour catégoriser les logs
>> > (auj dans mon code les logs ne sont divisés qu'en 2 catégories : DEBUG
>> > et ERROR)
>
> (y a-t-il des règles pour déterminer la catégorie de chaque message ?)
Ce que je te dis, c'est que c'est toi qui voit ce qui est important pour
ton programme. Est-ce que c'est une erreur grave qui l'empêche de
tourner ? Est-ce que c'est juste une précision du fichier de conf que tu
as choisis ? Est-ce que c'est parce que ton programme a un comportement
bizarre alors il faut tout logguer pour comprendre ce qu'il fait
vraiment ligne par ligne ?
>> Mon idée, c'est que tu te programmes une fonction genre
>> « sendlog(niveau,message) »
>
>> Et c'est ta fonction sendlog qui va choisir quoi faire de tes logs :
>> poubelle si c'est pas le bon niveau de logs et envoi dans le cas
>> contraire.
>
> ok, je comprend mieux :-)
>
> je croyais que tu disais de mettre un tag dans le fichier de log, pour
> pouvoir ensuite le relire en filtrant (par ex avec grep), et
> éventuellement le répartir en plusieurs fichiers par la suite.
Tu as les deux en fait. À partir du moment o͹ tu reçois le niveau de log
pour savoir s'il faut l'envoyer ou pas, tu mets le tag qui va bien dans
tes logs. Quand tu es en mode debug, ça permet de chercher les erreurs
graves au milieu des centaines de lignes d'information.
De même qu'il faut mettre l'heure Í laquelle tu loggues le message. Le
tag et l'heure ne sont pas plus compliqués Í ajouter mais tu en verras
l'utilité le jour o͹ tu auras des milliers de lignes de log Í analyser.
> en fait tu dis juste de sélectionner ce qu'on affiche, et que c'est
> suffisant au niveau de l'ergonomie pour ne générer qu'un seul fichier de
> log.
> (dis moi si je me trompe Í nouveau)
Ce que je dis, c'est qu'en faisant les deux, tu peux tout mettre dans le
même fichier de logs. Parce que des fois, tu as un log normal informatif
qui arrive systématiquement juste avant une erreur grave et de faire la
corrélation entre les deux va être dur si tu as des fichiers différents.
En temps normal, tu regardes juste si tu as des erreurs pour savoir si
tout est normal. En débuggage, tu cherches tes erreurs et tu lis le
contexte autour.
>> > est-ce que ça convient, d'avoir tous ces tags qui s'affichent dans le
>> > terminal quand on est en CLI (par ex au moment d'indiquer que les
>> > arguments sont mauvais) ?
>>
>> Si c'est une application qui tourne dans un terminal, faut pas que les
>> logs la rendent inutilisable.
>
> mais si j'ai bien compris, les tags ne sont pas censés se retrouver sur
> l'affichage. donc tout va bien :-)
En quoi ça te gêne d'afficher les tags ? C'est pas plus compliqué, c'est
juste un mot défini Í rajouter. Et lorsque les sorties sont mélangées,
c'est la seule façon de voir rapidement si c'est de l'affichage normal
ou une alerte Í traiter.
>> Par exemple, la commande find, si tu
>> cherches toto.txt avec « find / -name toto.txt » en tant que simple
>> utilisateur, tu vas avoir l'écran rempli d'erreurs des répertoires que
>> tu n'as pas le droit de lire. et s'il y a une réponse positive, tu ne
>> vas pas la voir. Alors tu vas plutÍ´t faire ta recherche avec un
>> « find / -name toto.txt 2> /dev/null ».
Pour le /dev/null c'est parce que tu ne veux mettre les messages
d'erreurs directement Í la poubelle.
Ce que je te donne comme réponses, ce sont surtout les
questions Í te poser pour comprendre l'impact de ce que tu vas mettre en
place.
Le 27-09-2021, Thomas a écrit :In article ,
Stéphane CARPENTIER wrote:Il n'y a rien de compliqué. Si tu balances tous tes logs sur ta sortie
d'erreur, tu dis Í l'utilisateur de tapper la commande
« $> monsuperprogramme 2> fichier.log »
et de t'envoyer le fichier « fichier.log » quand il a reproduit le bug.
et pour Windows,
je vais sur un forum Windows pour demander comment faire, et ensuite je
transmet Í l'utilisateur la réponse qu'on me donne sans l'avoir
pratiquée.
ou alors je lui répond "vas sur un forum Windows pour demander comment
on fait ça, moi je sais pas".
Oui, bon, alors effectivement, Windows, je ne connais pas, je ne sais
pas comment ça marche et c'est pas mon problème. Mes réponses sont
orientées unix. Dans les grandes lignes ça doit pouvoir s'adapter sur
Windows mais je ne sais pas comment.
En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
rapporté.
je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
de nécessité Í cet endroit.
et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
pourra tjr l'améliorer plus tard.
Ce que je veux dire, c'est que tu peux apporter une nouvelle
fonctionnalité Í ton programme et que cette fonctionnalité va nécessiter
va nécessiter 10Go d'espace disque libre et que du coup, ça peut devenir
important de se mettre Í le logguer.
>> Pour la séparation de stdout et stderr, c'est pas forcément très utile.
>> Il me semble préférable de tout mettre au même endroit avec un niveau de
>> log qui contient un tag et qui est paramétrable. Par exemple, tu mets du
>> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un niveau
>> d'activation faible en temps normal pour avoir moins de lignes et tu
>> affiches tout quand tu veux comprendre ce qu'il se passe.
>
> j'aime bcp l'idée :-)
>
> je ne sais pas si c'est facile Í faire très rapidement, parce que :
> - il faut que je définisse des règles pour catégoriser les logs
> (auj dans mon code les logs ne sont divisés qu'en 2 catégories : DEBUG
> et ERROR)
(y a-t-il des règles pour déterminer la catégorie de chaque message ?)
Ce que je te dis, c'est que c'est toi qui voit ce qui est important pour
ton programme. Est-ce que c'est une erreur grave qui l'empêche de
tourner ? Est-ce que c'est juste une précision du fichier de conf que tu
as choisis ? Est-ce que c'est parce que ton programme a un comportement
bizarre alors il faut tout logguer pour comprendre ce qu'il fait
vraiment ligne par ligne ?
Mon idée, c'est que tu te programmes une fonction genre
« sendlog(niveau,message) »Et c'est ta fonction sendlog qui va choisir quoi faire de tes logs :
poubelle si c'est pas le bon niveau de logs et envoi dans le cas
contraire.
ok, je comprend mieux :-)
je croyais que tu disais de mettre un tag dans le fichier de log, pour
pouvoir ensuite le relire en filtrant (par ex avec grep), et
éventuellement le répartir en plusieurs fichiers par la suite.
Tu as les deux en fait. À partir du moment o͹ tu reçois le niveau de log
pour savoir s'il faut l'envoyer ou pas, tu mets le tag qui va bien dans
tes logs. Quand tu es en mode debug, ça permet de chercher les erreurs
graves au milieu des centaines de lignes d'information.
De même qu'il faut mettre l'heure Í laquelle tu loggues le message. Le
tag et l'heure ne sont pas plus compliqués Í ajouter mais tu en verras
l'utilité le jour o͹ tu auras des milliers de lignes de log Í analyser.
en fait tu dis juste de sélectionner ce qu'on affiche, et que c'est
suffisant au niveau de l'ergonomie pour ne générer qu'un seul fichier de
log.
(dis moi si je me trompe Í nouveau)
Ce que je dis, c'est qu'en faisant les deux, tu peux tout mettre dans le
même fichier de logs. Parce que des fois, tu as un log normal informatif
qui arrive systématiquement juste avant une erreur grave et de faire la
corrélation entre les deux va être dur si tu as des fichiers différents.
En temps normal, tu regardes juste si tu as des erreurs pour savoir si
tout est normal. En débuggage, tu cherches tes erreurs et tu lis le
contexte autour.
> est-ce que ça convient, d'avoir tous ces tags qui s'affichent dans le
> terminal quand on est en CLI (par ex au moment d'indiquer que les
> arguments sont mauvais) ?
Si c'est une application qui tourne dans un terminal, faut pas que les
logs la rendent inutilisable.
mais si j'ai bien compris, les tags ne sont pas censés se retrouver sur
l'affichage. donc tout va bien :-)
En quoi ça te gêne d'afficher les tags ? C'est pas plus compliqué, c'est
juste un mot défini Í rajouter. Et lorsque les sorties sont mélangées,
c'est la seule façon de voir rapidement si c'est de l'affichage normal
ou une alerte Í traiter.
Par exemple, la commande find, si tu
cherches toto.txt avec « find / -name toto.txt » en tant que simple
utilisateur, tu vas avoir l'écran rempli d'erreurs des répertoires que
tu n'as pas le droit de lire. et s'il y a une réponse positive, tu ne
vas pas la voir. Alors tu vas plutÍ´t faire ta recherche avec un
« find / -name toto.txt 2> /dev/null ».
Pour le /dev/null c'est parce que tu ne veux mettre les messages
d'erreurs directement Í la poubelle.
Ce que je te donne comme réponses, ce sont surtout les
questions Í te poser pour comprendre l'impact de ce que tu vas mettre en
place.
In article ,
Stéphane CARPENTIER wrote:Le 27-09-2021, Thomas a écrit :
> In article ,
> Stéphane CARPENTIER wrote:>> En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
>> rapporté.
>
> je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
> de nécessité Í cet endroit.
> et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
> pourra tjr l'améliorer plus tard.
Ce que je veux dire, c'est que tu peux apporter une nouvelle
fonctionnalité Í ton programme et que cette fonctionnalité va nécessiter
va nécessiter 10Go d'espace disque libre et que du coup, ça peut devenir
important de se mettre Í le logguer.
en fait quand je voyais le nb de cas de figures possibles, qui
s'approche de 27,
s'il fallait rapporter sur toutes les interfaces qui ne posent pas de pb
tous les pbs des interfaces qui en posent,
je me disais que c'était plus simple de tout ignorer.
mais s'il n'y a que qqes cas particuliers dans lesquels c'est préférable
de rapporter les pbs d'une interface sur une autre, ça devient bcp plus
simple. :-)
>> >> Par exemple, tu mets
>> >> du
>> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
>> >> niveau
>> >> d'activation faible en temps normal
In article <slrnslefar.16n.sc@scarpet42p.localdomain>,
Stéphane CARPENTIER <sc@fiat-linux.fr> wrote:
> Le 27-09-2021, Thomas <fantome.forums.tDeContes@free.fr.invalid> a écrit :
> > In article <slrnsl18t8.29t.sc@scarpet42p.localdomain>,
> > Stéphane CARPENTIER <sc@fiat-linux.fr> wrote:
> >> En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
> >> rapporté.
> >
> > je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
> > de nécessité Í cet endroit.
> > et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
> > pourra tjr l'améliorer plus tard.
>
> Ce que je veux dire, c'est que tu peux apporter une nouvelle
> fonctionnalité Í ton programme et que cette fonctionnalité va nécessiter
> va nécessiter 10Go d'espace disque libre et que du coup, ça peut devenir
> important de se mettre Í le logguer.
en fait quand je voyais le nb de cas de figures possibles, qui
s'approche de 27,
s'il fallait rapporter sur toutes les interfaces qui ne posent pas de pb
tous les pbs des interfaces qui en posent,
je me disais que c'était plus simple de tout ignorer.
mais s'il n'y a que qqes cas particuliers dans lesquels c'est préférable
de rapporter les pbs d'une interface sur une autre, ça devient bcp plus
simple. :-)
> >> >> Par exemple, tu mets
> >> >> du
> >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> >> >> niveau
> >> >> d'activation faible en temps normal
In article ,
Stéphane CARPENTIER wrote:Le 27-09-2021, Thomas a écrit :
> In article ,
> Stéphane CARPENTIER wrote:>> En fait, c'est ton programme, c'est toi qui doit savoir ce qui doit être
>> rapporté.
>
> je crois qu'on s'est entendu avec Marc sur le fait qu'il n'y avait pas
> de nécessité Í cet endroit.
> et si qqn d'autre me fais changer d'avis plus tard ... tant pis, on
> pourra tjr l'améliorer plus tard.
Ce que je veux dire, c'est que tu peux apporter une nouvelle
fonctionnalité Í ton programme et que cette fonctionnalité va nécessiter
va nécessiter 10Go d'espace disque libre et que du coup, ça peut devenir
important de se mettre Í le logguer.
en fait quand je voyais le nb de cas de figures possibles, qui
s'approche de 27,
s'il fallait rapporter sur toutes les interfaces qui ne posent pas de pb
tous les pbs des interfaces qui en posent,
je me disais que c'était plus simple de tout ignorer.
mais s'il n'y a que qqes cas particuliers dans lesquels c'est préférable
de rapporter les pbs d'une interface sur une autre, ça devient bcp plus
simple. :-)
>> >> Par exemple, tu mets
>> >> du
>> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
>> >> niveau
>> >> d'activation faible en temps normal
> >> >> Par exemple, tu mets
> >> >> du
> >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> >> >> niveau
> >> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
> > >> >> Par exemple, tu mets
> > >> >> du
> > >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> > >> >> niveau
> > >> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
> >> >> Par exemple, tu mets
> >> >> du
> >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> >> >> niveau
> >> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
- on peut tout ignorer en cas de pb avec l'interface graphique, parce
que ça ne peut pas arriver uniquement Í cet endroit, ça arrivera
forcément ailleurs.
en cas de pb avec stdout / stderr,
- si l'interface graphique est disponible, on affiche ça dedans,
parce que dans ce cas c'est probable que stdout et stderr ne soient pas
lus (redirigés ou jetés).
- si non, on l'envoie sur stdout,
parce que dans ce cas c'est probable que stderr ne soit pas lu
(redirigé),
mais c'est probable que stdout le soit (directement dans un terminal).
>> >> Par exemple, tu mets
>> >> du
>> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
>> >> niveau
>> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
- on peut tout ignorer en cas de pb avec l'interface graphique, parce
que ça ne peut pas arriver uniquement Í cet endroit, ça arrivera
forcément ailleurs.
en cas de pb avec stdout / stderr,
- si l'interface graphique est disponible, on affiche ça dedans,
parce que dans ce cas c'est probable que stdout et stderr ne soient pas
lus (redirigés ou jetés).
- si non, on l'envoie sur stdout,
parce que dans ce cas c'est probable que stderr ne soit pas lu
(redirigé),
mais c'est probable que stdout le soit (directement dans un terminal).
> >> >> Par exemple, tu mets
> >> >> du
> >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> >> >> niveau
> >> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
- on peut tout ignorer en cas de pb avec l'interface graphique, parce
que ça ne peut pas arriver uniquement Í cet endroit, ça arrivera
forcément ailleurs.
en cas de pb avec stdout / stderr,
- si l'interface graphique est disponible, on affiche ça dedans,
parce que dans ce cas c'est probable que stdout et stderr ne soient pas
lus (redirigés ou jetés).
- si non, on l'envoie sur stdout,
parce que dans ce cas c'est probable que stderr ne soit pas lu
(redirigé),
mais c'est probable que stdout le soit (directement dans un terminal).
>> >> Par exemple, tu mets
>> >> du
>> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
>> >> niveau
>> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
Le 19-12-2021, Thomas a écrit :en cas de pb avec stdout / stderr,
Ce qui est bien avec stdout/stderr, c'est que s'il y a un problème,
l'utilisateur le redirige vers un autre endroit o͹ il n'y a pas de
problème.
Si par contre, ton application exécute une action en tÍ¢che de fond
toutes les minutes, si l'action plante une fois sur deux, il faut le
logguer mais ne pas lui afficher la pop-up toutes les deux minutes. Ce
n'est pas forcément grave si stdout et stderr ne sont pas lus. Si
l'utilisateur veut chercher Í comprendre après coup, il les lira.
- si non, on l'envoie sur stdout,
parce que dans ce cas c'est probable que stderr ne soit pas lu
(redirigé),
mais c'est probable que stdout le soit (directement dans un terminal).
En fait, l'intérêt de sdout et de stderr, c'est que tu t'en cognes de
savoir si c'est lu ou pas, redirigé ou pas. Tu donnes une information et
l'utilisateur en fait ce qu'il veut.
La différence entre les deux, c'est que le stdout, c'est pour
l'information normale et le stderr c'est pour l'erreur. Par exemple, si
ton application exécute une tÍ¢che de fond toutes les minutes, dans ton
stdout, tu vas logguer le début et la fin de l'action. Et s'il y a un
plantage, tu loggues l'erreur dans le stderr.
Comme ça, si l'utilisateur redirige tout dans le même fichier, il aura
le contexte : le plantage aura eu lieu pendant la t͢che de fond. Mais
s'il veut se concentrer sur les erreurs, il ne regarde que stderr. Tu le
laisses choisir le niveau d'information qu'il veut afficher.
Et si dans tes logs, tu précises ce que c'est (avec un timestamp devant) :
INFO: début de la tÍ¢che de fond
INFO: 42 informations Í mettre Í jour
WARNING: 1 mise Í jour est vide, utilisation de la valeur TOTO
ERROR: enregistrement impossible, droits insuffisants
INFO: fin de la t͢che de fond
LÍ , comme en général, tu vas avoir des centaines de lignes d'info pour
quelques lignes d'erreur, il va pouvoir faire des recherches faciles.
> >> >> Par exemple, tu mets
> >> >> du
> >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> >> >> niveau
> >> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
En général, le plus simple est d'utiliser un framework qui fait déjÍ
tout ça et de suivre la doc.
Le 19-12-2021, Thomas <fantome.forums.tDeContes@free.fr.invalid> a écrit :
> en cas de pb avec stdout / stderr,
Ce qui est bien avec stdout/stderr, c'est que s'il y a un problème,
l'utilisateur le redirige vers un autre endroit o͹ il n'y a pas de
problème.
Si par contre, ton application exécute une action en tÍ¢che de fond
toutes les minutes, si l'action plante une fois sur deux, il faut le
logguer mais ne pas lui afficher la pop-up toutes les deux minutes. Ce
n'est pas forcément grave si stdout et stderr ne sont pas lus. Si
l'utilisateur veut chercher Í comprendre après coup, il les lira.
> - si non, on l'envoie sur stdout,
> parce que dans ce cas c'est probable que stderr ne soit pas lu
> (redirigé),
> mais c'est probable que stdout le soit (directement dans un terminal).
En fait, l'intérêt de sdout et de stderr, c'est que tu t'en cognes de
savoir si c'est lu ou pas, redirigé ou pas. Tu donnes une information et
l'utilisateur en fait ce qu'il veut.
La différence entre les deux, c'est que le stdout, c'est pour
l'information normale et le stderr c'est pour l'erreur. Par exemple, si
ton application exécute une tÍ¢che de fond toutes les minutes, dans ton
stdout, tu vas logguer le début et la fin de l'action. Et s'il y a un
plantage, tu loggues l'erreur dans le stderr.
Comme ça, si l'utilisateur redirige tout dans le même fichier, il aura
le contexte : le plantage aura eu lieu pendant la t͢che de fond. Mais
s'il veut se concentrer sur les erreurs, il ne regarde que stderr. Tu le
laisses choisir le niveau d'information qu'il veut afficher.
Et si dans tes logs, tu précises ce que c'est (avec un timestamp devant) :
INFO: début de la tÍ¢che de fond
INFO: 42 informations Í mettre Í jour
WARNING: 1 mise Í jour est vide, utilisation de la valeur TOTO
ERROR: enregistrement impossible, droits insuffisants
INFO: fin de la t͢che de fond
LÍ , comme en général, tu vas avoir des centaines de lignes d'info pour
quelques lignes d'erreur, il va pouvoir faire des recherches faciles.
>> > >> >> Par exemple, tu mets
>> > >> >> du
>> > >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
>> > >> >> niveau
>> > >> >> d'activation faible en temps normal
>
> est-ce que je numérote dans cet ordre de 0 Í 3 ?
En général, le plus simple est d'utiliser un framework qui fait déjÍ
tout ça et de suivre la doc.
Le 19-12-2021, Thomas a écrit :en cas de pb avec stdout / stderr,
Ce qui est bien avec stdout/stderr, c'est que s'il y a un problème,
l'utilisateur le redirige vers un autre endroit o͹ il n'y a pas de
problème.
Si par contre, ton application exécute une action en tÍ¢che de fond
toutes les minutes, si l'action plante une fois sur deux, il faut le
logguer mais ne pas lui afficher la pop-up toutes les deux minutes. Ce
n'est pas forcément grave si stdout et stderr ne sont pas lus. Si
l'utilisateur veut chercher Í comprendre après coup, il les lira.
- si non, on l'envoie sur stdout,
parce que dans ce cas c'est probable que stderr ne soit pas lu
(redirigé),
mais c'est probable que stdout le soit (directement dans un terminal).
En fait, l'intérêt de sdout et de stderr, c'est que tu t'en cognes de
savoir si c'est lu ou pas, redirigé ou pas. Tu donnes une information et
l'utilisateur en fait ce qu'il veut.
La différence entre les deux, c'est que le stdout, c'est pour
l'information normale et le stderr c'est pour l'erreur. Par exemple, si
ton application exécute une tÍ¢che de fond toutes les minutes, dans ton
stdout, tu vas logguer le début et la fin de l'action. Et s'il y a un
plantage, tu loggues l'erreur dans le stderr.
Comme ça, si l'utilisateur redirige tout dans le même fichier, il aura
le contexte : le plantage aura eu lieu pendant la t͢che de fond. Mais
s'il veut se concentrer sur les erreurs, il ne regarde que stderr. Tu le
laisses choisir le niveau d'information qu'il veut afficher.
Et si dans tes logs, tu précises ce que c'est (avec un timestamp devant) :
INFO: début de la tÍ¢che de fond
INFO: 42 informations Í mettre Í jour
WARNING: 1 mise Í jour est vide, utilisation de la valeur TOTO
ERROR: enregistrement impossible, droits insuffisants
INFO: fin de la t͢che de fond
LÍ , comme en général, tu vas avoir des centaines de lignes d'info pour
quelques lignes d'erreur, il va pouvoir faire des recherches faciles.
> >> >> Par exemple, tu mets
> >> >> du
> >> >> DEBUG, INFO, WARNING et ERROR quand tu envoies tes logs avec un
> >> >> niveau
> >> >> d'activation faible en temps normal
est-ce que je numérote dans cet ordre de 0 Í 3 ?
En général, le plus simple est d'utiliser un framework qui fait déjÍ
tout ça et de suivre la doc.
bonjour :-)Je crois que pour le moment je ne comprends pas l'objectif de
j'ai des logs Í gérer, et j'aimerais mieux ne pas les
effacer quand j'ai
besoin de place pour un nouveau fichier.
j'ai regardé ce qui se passe dans /var/log/ :
est ce que c'est qqch de plus ou moins normalisé, ou est ce qu'on fait
vraiment ce qu'on veut ?
1
j'aime bcp l'idée d'avoir un n° que je peux incrementer
jusqu'Í
l'infini, pas de limite supérieure :-)
2
le gros pb, c'est que ça ajoute le n° après l'extension
plutÍ´t qu'avant.
du coup, mon éditeur de texte croit avoir affaire Í des
pages de man
plutÍ´t qu'Í des logs !
quel genre de pb ça peut poser si je décide de faire
différemment ?
et pendant que j'y suis, pourquoi ne pas corriger ça au niveau du
système ?
3
apparemment, quand on a besoin de place, on décale tous les fichiers
d'un cran.
si Í la place je met juste le dernier n° (le 1er dispo) au
fichier qui
n'en a pas encore, sans toucher aux autres, qu'est ce que vous en dites ?
--
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/
bonjour :-)Je crois que pour le moment je ne comprends pas l'objectif de
j'ai des logs Í gérer, et j'aimerais mieux ne pas les
effacer quand j'ai
besoin de place pour un nouveau fichier.
j'ai regardé ce qui se passe dans /var/log/ :
est ce que c'est qqch de plus ou moins normalisé, ou est ce qu'on fait
vraiment ce qu'on veut ?
1
j'aime bcp l'idée d'avoir un n° que je peux incrementer
jusqu'Í
l'infini, pas de limite supérieure :-)
2
le gros pb, c'est que ça ajoute le n° après l'extension
plutÍ´t qu'avant.
du coup, mon éditeur de texte croit avoir affaire Í des
pages de man
plutÍ´t qu'Í des logs !
quel genre de pb ça peut poser si je décide de faire
différemment ?
et pendant que j'y suis, pourquoi ne pas corriger ça au niveau du
système ?
3
apparemment, quand on a besoin de place, on décale tous les fichiers
d'un cran.
si Í la place je met juste le dernier n° (le 1er dispo) au
fichier qui
n'en a pas encore, sans toucher aux autres, qu'est ce que vous en dites ?
--
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/