Django-fr

Forum

#1 15-06-2015 14:00:55

Bourhis Yves
Membre
Inscription : 03-10-2011
Messages : 46

Latence d'écriture dans un fichier de log

Bonjour,

afin de garder une trace d'une opération d'importation de données,
j'écris des logs dans un fichier.
Je m'aperçois d'un problème : les logs sont tous écrits d'un seul coup
quand l'opération elle même est finie et non pas au fur et à mesure !
En gros j'ai quelque chose comme ça dans mon code :

handleLog = open('/var/log/monlog','a')
BOUCLE de traitement sur le fichier à importer
     ...
     handleLog.write(date+heure+message sur la donnée en cours d'import)
     ...
handleLog.close()

L'opération prend quelques minutes, mais tous les logs ne s'affiche
qu'une fois l'ensemble fini : du coup un "tailf /var/log/monlog" ne
m'est pas d'un grand secours pour en suivre le bon déroulement !

Est-ce qu'il y a un moyen d'obliger "django" à écrire au fur et à mesure
de la boucle ?

Cordialement.

Hors ligne

#2 15-06-2015 14:19:25

Arthur Vuillard
Membre
Inscription : 21-07-2016
Messages : 9

Re : Latence d'écriture dans un fichier de log

Hello

Tu peux essayer en utilisant flush
<https://docs.python.org/2/library/stdtypes.html#file.flush> dans le
bloc de la boucle. Sinon, tu peux aussi utiliser le module logging
<https://docs.python.org/3.4/library/logging.html> de python qui est
très utile pour faire ce genre de choses...

++

Arthur


Le 15/06/2015 15:00, Bourhis Yves a écrit :
> Bonjour,
>
> afin de garder une trace d'une opération d'importation de données,
> j'écris des logs dans un fichier.
> Je m'aperçois d'un problème : les logs sont tous écrits d'un seul coup
> quand l'opération elle même est finie et non pas au fur et à mesure !
> En gros j'ai quelque chose comme ça dans mon code :
>
> handleLog = open('/var/log/monlog','a')
> BOUCLE de traitement sur le fichier à importer
>     ...
>     handleLog.write(date+heure+message sur la donnée en cours d'import)
>     ...
> handleLog.close()
>
> L'opération prend quelques minutes, mais tous les logs ne s'affiche
> qu'une fois l'ensemble fini : du coup un "tailf /var/log/monlog" ne
> m'est pas d'un grand secours pour en suivre le bon déroulement !
>
> Est-ce qu'il y a un moyen d'obliger "django" à écrire au fur et à
> mesure de la boucle ?
>
> Cordialement.

Hors ligne

#3 15-06-2015 14:39:47

Bourhis Yves
Membre
Inscription : 03-10-2011
Messages : 46

Re : Latence d'écriture dans un fichier de log

Le 15/06/2015 15:19, Arthur Vuillard a écrit :
> Tu peux essayer en utilisant flush
> <https://docs.python.org/2/library/stdtypes.html#file.flush> dans le
> bloc de la boucle. Sinon, tu peux aussi utiliser le module logging
> <https://docs.python.org/3.4/library/logging.html> de python qui est
> très utile pour faire ce genre de choses...

Eh oui le fameux "RTFM" ;-)
Je viens de lire la doc sur "logging" et la tester rapidement : ça règle
le problème !

Merci.

Hors ligne

Pied de page des forums