Các nhật ký tôi đang tạo bằng Python được dự định sẽ được lưu tạm thời dưới dạng các tệp sẽ lần lượt được xử lý thành cơ sở dữ liệu nhật ký. Chúng có định dạng được phân định theo đường ống để chỉ ra cách nhật ký sẽ được xử lý, nhưng logging.exception() đang phá vỡ tiêu chuẩn của tôi bằng cách thêm một trường quá nhiều và quá nhiều dòng mới.Làm cách nào để có thể định dạng stacktraces ngoại lệ trong ghi nhật ký 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
Làm cách nào để xử lý tốt nhất hoặc định dạng tracebacks với khoảng trắng và dòng mới? Những thông điệp này là một phần và bưu kiện trong logging.exception(), nhưng nó cảm thấy kỳ quặc để phá vỡ chức năng khi tôi đang cố gắng ghi lại các trường hợp ngoại lệ. Làm thế nào để tôi ghi lại các bản nhạc của tôi và định dạng chúng? Các tracebacks có nên bỏ qua không?
Cảm ơn bạn đã dành thời gian!
Bạn có hỏi bạn nên làm gì không, hoặc làm thế nào để làm điều đó? Cách bạn muốn định dạng các thông báo lỗi trong tệp nhật ký của mình tùy thuộc vào bạn. * Bạn * muốn chúng trông như thế nào? – BrenBarn
Cảm ơn bạn đã xóa thông tin đó. Lý tưởng nhất, tôi có thể chứa các tracebacks như một thuộc tính được phân cách bằng đường ống trên cùng một dòng với phần còn lại của thông điệp đã đăng nhập. – twoxmachine