Журналы, которые я создаю в Python, предназначены для временного хранения в виде файлов, которые, в свою очередь, будут обрабатываться в базе данных журнала. Они берут формат, обозначенный трубкой, чтобы определять, как будут обрабатываться журналы, но logging.exception() нарушает мой стандарт, добавляя слишком много полей и слишком много новых строк.Как я могу форматировать стеки стека исключения в протоколе 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
Как лучше ручки или формат tracebacks с пробелами и символами новой строки? Эти сообщения являются неотъемлемой частью в logging.exception(), но мне кажется странным обойти эту функцию, когда я пытаюсь документировать экземпляры исключений. Как записывать мои трассировки и форматировать их тоже? Следует ли игнорировать трассировки?
Благодарим вас за внимание!
Вы спрашиваете, что вы должны делать или как это сделать? Как вы хотите отформатировать сообщения об ошибках в файле журнала, зависит от вас. Что вы хотите, чтобы они выглядели? – BrenBarn
Спасибо, что поняли. В идеале я мог бы содержать трассировки в качестве другого атрибута, разделенного на триггер, в той же строке, что и остальная часть зарегистрированного сообщения. – twoxmachine