2010-03-31 37 views
9

Tôi muốn đăng nhập mô-đun và tên lớp theo mặc định trong các thông điệp tường trình từ trình xử lý yêu cầu của tôi.Làm cách nào để thay đổi định dạng thông báo tường trình mặc định trong công cụ ứng dụng python?

Cách thông thường để thực hiện việc này có vẻ là đặt chuỗi định dạng tùy chỉnh bằng cách gọi logging.basicConfig, nhưng điều này chỉ có thể được gọi một lần và đã được gọi vào lúc mã của tôi chạy.

Phương pháp khác là tạo nhật ký mới Handler có thể được chuyển qua nhật ký mới Formatter, nhưng điều này dường như không đúng khi tôi muốn sử dụng trình xử lý nhật ký hiện có mà App Engine đã cài đặt.

Cách đúng để thêm thông tin vào tất cả các thông điệp tường trình trong Công cụ ứng dụng python, nhưng sử dụng định dạng nhật ký hiện có và chìm?

Trả lời

12

Tôi đã nấu món này bằng cách đọc __init__.py của mô-đun logging. Tôi không biết nếu điều này là thích hợp, nhưng nó có vẻ làm việc:

import logging 

logging.basicConfig(level=logging.DEBUG, 
        format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', 
        datefmt='%m-%d %H:%M', 
        ) 

logging.info('Danger Will Robinson!') 
# 03-31 20:00 root   INFO  Danger Will Robinson! 
root = logging.getLogger() 
hdlr = root.handlers[0] 
fmt = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') 
hdlr.setFormatter(fmt) 
logging.info('Danger Will Robinson!') 
# root  : INFO  Danger Will Robinson! 
+0

Tôi nhận thấy rằng 'root.handlers [0]' không hoạt động, nếu 'basicConfig()' KHÔNG được gọi trước đó. Tại sao vậy? –

+1

'logging.basicConfig' là một chức năng thuận tiện để thiết lập trình xử lý gốc. Nếu bạn không định nghĩa một trình xử lý thì 'root.handlers' là một danh sách trống. Vì vậy, cố truy cập phần tử đầu tiên của danh sách trống, ví dụ: 'root.handlers [0]', tăng 'IndexError'. Bất cứ khi nào bạn sử dụng mô-đun 'logging', bạn phải gọi' logging.basicConfig' hoặc đọc cấu hình từ một tệp (ví dụ 'logging.config.fileConfig') hoặc [tự thiết lập trình xử lý] (http: //) stackoverflow.com/a/4139462/190597). – unutbu

Các vấn đề liên quan