Comments on: Écrire des logs en Python http://sametmax.com/ecrire-des-logs-en-python/ Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 12:15:31 +0000 hourly 1 http://wordpress.org/?v=3.3.1 By: Sam http://sametmax.com/ecrire-des-logs-en-python/#comment-9433 Sam Tue, 28 May 2013 06:38:46 +0000 http://sametmax.com/?p=5267#comment-9433 Pour écrire depuis un sous-module, c'est pareil que depuis le module principal. Il faut juste que le nom du log soit le même, ou un dérivé genre "module" => "module.sous". Quand au PEP8, il a été écrit APRES ces libs, justement pour éviter que ça ne se reproduise. Pour écrire depuis un sous-module, c’est pareil que depuis le module principal. Il faut juste que le nom du log soit le même, ou un dérivé genre “module” => “module.sous”.

Quand au PEP8, il a été écrit APRES ces libs, justement pour éviter que ça ne se reproduise.

]]>
By: Guts http://sametmax.com/ecrire-des-logs-en-python/#comment-9426 Guts Tue, 28 May 2013 01:49:01 +0000 http://sametmax.com/?p=5267#comment-9426 Salut, Un petit merci pour le code et l'explication de code : ça m'a permis d'ajouter facilement un log dans mon programme et pour un débutant c'est le genre de truc indispensable ! Par contre je suis pas parvenu à faire écrire mon sous-module dans le même fichier log :( J'ai cherché du côté de la doc officielle mais c'est pas vraiment très bavard (<a href="http://docs.python.org/2/howto/logging.html#logging-from-multiple-modules" rel="nofollow">http://docs.python.org/2/howto/logging.html#logging-from-multiple-modules</a>) Si quelqu'un a un petit bout de code qui explique un peu le zafèr... Autre question, @Sam dans l'un de tes <a href="http://sametmax.com/ecrire-des-logs-en-python/#comment-6744" rel="nofollow">comments</a>, tu dis que le code est assez pourri vu du PEP8. Mais pour un module inclus dans la librairie standard ça la fout pas mal ? Salut,

Un petit merci pour le code et l’explication de code : ça m’a permis d’ajouter facilement un log dans mon programme et pour un débutant c’est le genre de truc indispensable !

Par contre je suis pas parvenu à faire écrire mon sous-module dans le même fichier log :( J’ai cherché du côté de la doc officielle mais c’est pas vraiment très bavard (http://docs.python.org/2/howto/logging.html#logging-from-multiple-modules) Si quelqu’un a un petit bout de code qui explique un peu le zafèr…

Autre question, @Sam dans l’un de tes comments, tu dis que le code est assez pourri vu du PEP8. Mais pour un module inclus dans la librairie standard ça la fout pas mal ?

]]>
By: Luigi http://sametmax.com/ecrire-des-logs-en-python/#comment-8946 Luigi Fri, 17 May 2013 09:11:54 +0000 http://sametmax.com/?p=5267#comment-8946 <span class="merci"></span>Petit coquille : <code>Tesing foo</code> devrait être <code>Testing foo</code> Encore un grand merci pour ce super tuto ! Petit coquille :

Tesing foo

devrait être Testing foo

Encore un grand merci pour ce super tuto !

]]>
By: Sam http://sametmax.com/ecrire-des-logs-en-python/#comment-8147 Sam Wed, 17 Apr 2013 20:22:45 +0000 http://sametmax.com/?p=5267#comment-8147 Si tu cherches juste le message d'erreur, c'est tout ce dont tu as besoin (<code>str(e)</code> retourne le message), sinon, il faut ta tapper l'extraction de la stacktrace complète. <code>wrapper()</code> fait référence à la fonction dans laquelle tu enrobes ton appel dans un décorateur. Si tu n'est pas à l'aise avec les décorateurs personnalisés, fais un petit tour sur http://sametmax.com/comprendre-les-decorateurs-python-pas-a-pas-partie-1/, j'y ai mis tout ce qu'il te faut. Si tu cherches juste le message d’erreur, c’est tout ce dont tu as besoin (str(e) retourne le message), sinon, il faut ta tapper l’extraction de la stacktrace complète.

wrapper() fait référence à la fonction dans laquelle tu enrobes ton appel dans un décorateur. Si tu n’est pas à l’aise avec les décorateurs personnalisés, fais un petit tour sur http://sametmax.com/comprendre-les-decorateurs-python-pas-a-pas-partie-1/, j’y ai mis tout ce qu’il te faut.

]]>
By: djipey http://sametmax.com/ecrire-des-logs-en-python/#comment-8136 djipey Wed, 17 Apr 2013 17:08:21 +0000 http://sametmax.com/?p=5267#comment-8136 Voilà, c'est bien plus clair. L'option 2), je ne pense pas qu'elle soit applicable à mon cas. C'est un programme PyQt, et ça ne plante pas totalement. Ça lève des exceptions c'est sûr, principalement dans mes algos, mais ça ne plante pas. Du coup, je pense que ça, ça devrait marcher: <code> def main(): try: app = QtGui.QApplication(sys.argv) ex = Fenetre() sys.exit(app.exec_()) except: # écrire dans le fichier de log raise # relève l'exception en l'état </code> C'est la fonction qui crée ma fenêtre. Par contre, je ne comprends pas ce qu'implique ta fonction "wrapper()" que tu donnes dans ton exemple plus haut. Ni comment tu peux récupérer l'exception pour l'écrire dans le log. Est-ce que tu sous-entends qu'il faut faire qqch comme : <code> except Exception,e : log("Caught:", e) </code> Voilà, c’est bien plus clair. L’option 2), je ne pense pas qu’elle soit applicable à mon cas. C’est un programme PyQt, et ça ne plante pas totalement. Ça lève des exceptions c’est sûr, principalement dans mes algos, mais ça ne plante pas.

Du coup, je pense que ça, ça devrait marcher:


def main():
try:
app = QtGui.QApplication(sys.argv)
ex = Fenetre()
sys.exit(app.exec_())
except:
# écrire dans le fichier de log
raise # relève l'exception en l'état

C’est la fonction qui crée ma fenêtre. Par contre, je ne comprends pas ce qu’implique ta fonction “wrapper()” que tu donnes dans ton exemple plus haut. Ni comment tu peux récupérer l’exception pour l’écrire dans le log. Est-ce que tu sous-entends qu’il faut faire qqch comme :


except Exception,e :
log("Caught:", e)

]]>
By: Sam http://sametmax.com/ecrire-des-logs-en-python/#comment-8131 Sam Wed, 17 Apr 2013 15:06:18 +0000 http://sametmax.com/?p=5267#comment-8131 Alors, tu as deux approches : - soit tu met tout ton code dans un grand try / except (si tu as un seul point d'entrée, c'est facile et propre), et tu peux utiliser mon code - soit tu te hook sur le crash de la VM comme expliqué dans l'article http://sametmax.com/log-post-mortem-avec-python/ Alors, tu as deux approches :

- soit tu met tout ton code dans un grand try / except (si tu as un seul point d’entrée, c’est facile et propre), et tu peux utiliser mon code
- soit tu te hook sur le crash de la VM comme expliqué dans l’article http://sametmax.com/log-post-mortem-avec-python/

]]>
By: djipey http://sametmax.com/ecrire-des-logs-en-python/#comment-8101 djipey Tue, 16 Apr 2013 11:55:57 +0000 http://sametmax.com/?p=5267#comment-8101 Donc je n'ai pas compris son code.. Donc je n’ai pas compris son code..

]]>
By: kontre http://sametmax.com/ecrire-des-logs-en-python/#comment-8100 kontre Tue, 16 Apr 2013 10:56:43 +0000 http://sametmax.com/?p=5267#comment-8100 Ben le code de Sam les attrappe toutes, et les loggues toutes, automatiquement. Teste, tu verras bien ! Ben le code de Sam les attrappe toutes, et les loggues toutes, automatiquement. Teste, tu verras bien !

]]>
By: djipey http://sametmax.com/ecrire-des-logs-en-python/#comment-8096 djipey Tue, 16 Apr 2013 08:14:23 +0000 http://sametmax.com/?p=5267#comment-8096 Oui, ça j'ai vu, mais je parlais de quelque chose de plus général. Attraper une expression particulière je sais faire, mais les attraper toutes (haha..), et ce de manière automatique, est-ce que c'est possible ? En somme je voudrais garder une trace de toutes les exceptions dans le fichier de log. Oui, ça j’ai vu, mais je parlais de quelque chose de plus général. Attraper une expression particulière je sais faire, mais les attraper toutes (haha..), et ce de manière automatique, est-ce que c’est possible ?

En somme je voudrais garder une trace de toutes les exceptions dans le fichier de log.

]]>
By: Sam http://sametmax.com/ecrire-des-logs-en-python/#comment-8090 Sam Mon, 15 Apr 2013 22:08:31 +0000 http://sametmax.com/?p=5267#comment-8090 Oui, on peut attraper une exception comme ceci dans le décorateur: <pre lang="python"> try: wrapper() except: # écrire dans le fichier de log raise # relève l'exception en l'état</pre> Oui, on peut attraper une exception comme ceci dans le décorateur:

try:
    wrapper()
except:
    # écrire dans le fichier de log
    raise # relève l'exception en l'état
]]>