I registri che sto creando in Python sono destinati ad essere temporaneamente memorizzati come file che, a loro volta, verranno elaborati in un database di log. Prendono un formato delimitato da pipe per dettare come verranno elaborati i log, ma logging.exception() sta infrangendo il mio standard aggiungendo troppi campi e troppe newline.Come posso formattare gli stacktracks delle eccezioni nella registrazione Python?
import logging
logging.basicConfig(filename='output.txt',
format='%(asctime)s|%(levelname)s|%(message)s|',
datefmt='%m/%d/%Y %I:%M:%S %p',
level=logging.DEBUG)
logging.info('Sample message')
try:
x = 1/0
except ZeroDivisionError as e:
logging.exception('ZeroDivisionError: {0}'.format(e))
# output.txt
01/27/2015 02:09:01 PM|INFO|Sample message|
01/27/2015 02:09:01 PM|ERROR|ZeroDivisionError: integer division or modulo by zero|
Traceback (most recent call last):
File "C:\Users\matr06586\Desktop\ETLstage\Python\blahblah.py", line 90, in <module>
x = 1/0
ZeroDivisionError: integer division or modulo by zero
Come è il modo migliore maniglia o formato traceback con lo spazio bianco e ritorni a capo? Questi messaggi sono parte integrante di logging.exception(), ma sembra strano aggirare la funzione quando sto tentando di documentare le istanze di eccezioni. Come posso registrare i miei traceback e formattarli anch'essi? I traceback dovrebbero essere ignorati?
Grazie per il vostro tempo!
Stai chiedendo cosa dovresti fare, o come farlo? Come si desidera formattare i messaggi di errore nel file di registro dipende da voi. Cosa vuoi * tu * vuoi che assomigli? – BrenBarn
Grazie per averlo chiarito. Idealmente, potrei contenere i traceback come un altro attributo delimitato da pipe sulla stessa riga del resto del messaggio registrato. – twoxmachine