2013-11-28 15 views
7

Tôi muốn thiết lập một bộ ghi Sentry cho một dự án Django. Tôi sẽ định nghĩa một trình xử lý sentry và sẽ đặt trình xử lý đó vào bộ ghi gốc với mức error.Root logger trong dictconfig

Theo tài liệu của logging mô-đun, có một đặc biệt root chính:

root - đây sẽ là cấu hình cho logger gốc. Việc xử lý cấu hình sẽ giống như đối với bất kỳ trình ghi nào, ngoại trừ cài đặt propagate sẽ không được áp dụng.

Đồng thời ở other đặt trình ghi nhật ký với tên '' được sử dụng để chứa cấu hình cho trình ghi nhật ký gốc.

Điều này có tác dụng tương tự không? Điều gì là thích hợp hơn?

>>> import logging 
>>> logging.getLogger('') is logging.root 
True 
>>> 

Trả lời

6

Dù bằng cách nào, trình ghi nhật ký có tên '' là trình ghi nhật ký gốc. Chỉ định root làm cho nó rõ ràng hơn những gì bạn đang làm nếu bạn đang cấu hình nhiều logger - cấu hình 'logger có thể bị mất trong một nhóm người khác, trong khi khóa root tiếp giáp với khóa loggers và do đó (theo lý thuyết) nên nổi bật hơn.

+1

Điều này * không * có vẻ đúng khi xác định cấu hình ghi nhật ký của bạn với thuộc tính [settings.LOGGING] (https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging) trong Django 1.7! Tôi đang đăng nhập vào một logger có tên trong module views và bản ghi log được capture nếu tôi đã định nghĩa một logger có tên '''' trong 'LOGGING', nhưng * not * nếu tôi đặt tên là' 'root''. Thật không may, tài liệu Django không đưa ra tuyên bố về cách đối phó với trình ghi gốc. –

+4

@hheimbuerger Nó không được đặt tên gốc trong logger dict, nó song song với các dict logger. Xem https://docs.python.org/2/library/logging.config.html#dictionary-schema-details để biết thêm thông tin. –