La journalisation
Python dispose déjà d'une excellente intégré dans le module de journalisation. Vous souhaiterez peut-être utiliser la journalisation modèle ici.
Le module de journalisation permet de spécifier un niveau d'importance; au cours de débogage, vous pouvez vous connecter à tout, alors que lors du fonctionnement normal, vous pouvez uniquement connecter critique des choses. Vous pouvez changer les choses et sur.
La plupart des gens utilise d'impression de base des déclarations de débogage, puis supprimer l'impression des déclarations. Il est préférable de les laisser dans la, mais de les désactiver, puis, lorsque vous avez un autre bug, vous pouvez ré-activer tout et regardez vos logs.
Cela peut être la meilleure façon possible de déboguer des programmes qui ont besoin de faire les choses rapidement, tels que la mise en réseau des programmes qui ont besoin de réagir avant que l'autre extrémité de la connexion réseau et s'en va. Vous pourriez ne pas avoir beaucoup de temps pour une seule étape d'un débogueur, mais vous pouvez simplement laisser votre code exécuté, et tout dans le journal, puis penchez-vous sur les journaux et de comprendre ce qui se passe vraiment.
EDIT: L'URL d'origine pour les modèles a été: http://aymanh.com/python-debugging-techniques
Cette page est absent donc je l'ai remplacé par une référence à l'instantané enregistré à archive.org: http://web.archive.org/web/20120819135307/http://aymanh.com/python-debugging-techniques
Dans le cas où il disparaît à nouveau, voici les modèles que j'ai mentionnés. Ce code est pris à partir du blog; je n'ai pas l'écrire.
import logging
import optparse
LOGGING_LEVELS = {'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG}
def main():
parser = optparse.OptionParser()
parser.add_option('-l', '--logging-level', help='Logging level')
parser.add_option('-f', '--logging-file', help='Logging file name')
(options, args) = parser.parse_args()
logging_level = LOGGING_LEVELS.get(options.logging_level, logging.NOTSET)
logging.basicConfig(level=logging_level, filename=options.logging_file,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# Your program goes here.
# You can access command-line arguments using the args variable.
if __name__ == '__main__':
main()
Et voici son explication de la façon d'utiliser le ci-dessus. Encore une fois, je ne suis pas d'obtenir le crédit pour cela:
Par défaut, le module de journalisation imprime critique, d'erreur et messages d'avertissement. Pour changer cela, de sorte que tous les niveaux sont imprimés, utilisez:
$ ./your-program.py --logging=debug
Pour envoyer des messages de log dans un fichier appelé de débogage.le journal:
$ ./your-program.py --logging-level=debug --logging-file=debug.log