Dzienniki, które tworzę w Pythonie, mają być tymczasowo przechowywane jako pliki, które z kolei będą przetwarzane w bazę danych dziennika. Przyjmują one format oznaczony rurami, aby określić sposób przetwarzania dzienników, ale metoda logging.exception() łamie mój standard, dodając jedną zbyt dużą liczbę pól i zbyt wiele nowych linii.Jak mogę formatować stosy wyjątków w dziennikach Pythona?
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
Jak najlepiej mogę obsługiwać lub formatu tracebacks ze spacjami i znakami nowej linii? Te komunikaty są częścią i paczkami w logging.exception(), ale dziwne jest ominięcie tej funkcji, gdy próbuję udokumentować wystąpienia wyjątków. Jak mogę nagrać moje tracebacki i sformatować je również? Czy informacje o śledzeniu powinny być ignorowane?
Dziękuję za poświęcony czas!
Czy pytasz, co powinieneś zrobić lub jak to zrobić? Sposób formatowania komunikatów o błędach w pliku dziennika należy do Ciebie. Jak * ty * chcesz, żeby wyglądały? – BrenBarn
Dzięki za wyczyszczenie tego. Najlepiej byłoby, gdybym umieścił tracebacki jako inny atrybut rozdzielany odgałęzieniami w tym samym wierszu, co reszta zalogowanego komunikatu. – twoxmachine