Vous n'êtes pas identifié(e).
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
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
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