Je le publie en coup de vent car je me dis que ça peut servir à des gens, mais j’ai pas l’intention d’y passer des heures… vu que je fais ça pour me faire gagner du temps en mission.
J’ai créé devpy, un outil pour me faciliter le développement.
Dans sa forme la plus simple:
pip install devpy |
Ca donne automatiquement:
- Un logger qui log dans un fichier temporaire et dans la console.
- Un traceback qui montre les lignes de SON code avec coloration syntaxique.
- Si le programme crashe, la stack trace est logguée dans le log automatiquement.
En gros quand on commence à bosser on fait:
import devpy.develop as log |
Et on peut logguer comme avec les logs python habituels (log.info
, log.debug
, etc).
On peut facilement retirer devpy
une fois qu’on a fini et le remplacer par un log Python traditionnel type:
log = logging.getLogger(__name__) |
Donc utiliser devpy
ne coûte rien car on peut le retirer facilement une fois qu’on a fini: c’est 100% compat avec le log de la stdlib.
Ça tombe bien, car c’est pas un truc qu’on met en prod en théorie (même si ça peut pas abîmer le serveur).
C’est juste un outil que j’ai fait car j’en avais marre:
- De galérer à setuper un logging de base à chaque fois. C’est long, verbeux, plein de coups fourrés. Mais 9 fois sur 10 je veux la même chose: la console et un fichier temp. Du coup par flemme je fais un print et je le regrette plus tard.
- Devoir faire les choses proprement pour le dev. Oui un bon log c’est important, mais quand je commence à bosser je ne veux pas passer mon après-midi à setuper les logs proprement. Je ferai ça plus tard, un truc à l’arrache pour le debug me suffit.
- Devoir chercher dans la stack trace les lignes qui m’intéressent. Je debugge rarement la stdlib. Montre moi MON code.
- Avoir des logs avec la stack trace en cas d’erreur est super relou à mettre en place. Mais c’est tellement pratique.
Je sais, il existe une tetra chiées d’outils de logging pour Python. Mais c’est pas ce que je veux. Je ne veux pas choisir une solution ou configurer un truc. Ca je le ferai plus tard, proprement. Je veux juste un log essentiel et à coût zero pour démarrer mes projets et pouvoir switcher plus tard.
Je vais sûrement rajouter des trucs dans devpy au fur et à mesure mais pour le moment ça fait ce que je veux.
Je l’ai mis compatible uniquement 3.6 car j’ai pas envie de me faire chier à tester ailleurs. D’ailleurs j’ai même pas de tests.
Et si vous êtes pas contents, vous pouvez vous mettre ma deadline là où je pense.
Merci mec.
C’est juste parfait, j’en avais ras le bol pour toutes les raisons que tu as cité. Merci.
Plus pour de la prod, pour éviter de perdre du temps dans le traitement des logs tout en ayant quand même une trace en cas de problème, j’ai écrit un truc qui tourne aussi autour de logging: bbrecorder.
Pypi: https://pypi.python.org/pypi/bbrecorder
Doc: http://bbrecorder.readthedocs.io/en/latest/
Ha Ha Ha
Sam !
j’adore ton style !!!!
et merci pour le partage
Merci, ça donne quelques idées ;)
Dans le même genre, il y a AutoLogging (http://pythonhosted.org/Autologging/) et IPython avec
%xmode Verbose
(pour avoir les valeurs dans les stack traces, ça évite de les logger pour rien)