Détails
capture des messages d'exception en python
import ftplib
import urllib2
import os
import logging
logger = logging.getLogger('ftpuploader')
hdlr = logging.FileHandler('ftplog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
FTPADDR = "some ftp address"
def upload_to_ftp(con, filepath):
try:
f = open(filepath,'rb') # file to send
con.storbinary('STOR '+ filepath, f) # Send the file
f.close() # Close file and FTP
logger.info('File successfully uploaded to '+ FTPADDR)
except, e:
logger.error('Failed to upload to ftp: '+ str(e))
Cela ne semble pas fonctionner, j'obtiens une erreur de syntaxe. Quelle est la bonne façon de procéder pour enregistrer toutes sortes d'exceptions dans un fichier ?
433
3
Vous devez définir le type d'exception que vous voulez attraper. Ainsi, écrivez
except Exception, e:
au lieu deexcept, e:
pour une exception générale (qui sera de toute façon enregistrée).Une autre possibilité est d'écrire tout votre code try/except de cette façon :
dans Python 3.x et les versions modernes de Python 2.x, utilisez
except Exception as e
au lieu deexcept Exception, e
:Cette syntaxe n'est plus prise en charge dans python 3. Utilisez plutôt la syntaxe suivante.
Vous pouvez essayer de spécifier le type BaseException de manière explicite. Toutefois, cela ne permettra d'attraper que les dérivés de BaseException. Bien que cela comprenne toutes les exceptions fournies par l'implémentation, il est également possible de lever des classes arbitraires de type ancien.