2013-07-19 26 views
5

Tôi chỉ muốn có thể ghi đè cấp độ nhật ký bảng điều khiển trong tệp cài đặt. Tôi đọc số django logging document, nhưng tôi đang gặp sự cố khi đăng nhập làm những gì tôi muốn. Tài liệu đảm bảo với tôi rằng:cách súc tích để thay đổi cấp độ điều khiển django cấp độ đăng nhập

"Từ Django 1.5 về phía trước, cấu hình ghi của dự án được hợp nhất với mặc định của Django, do đó bạn có thể quyết định xem bạn có muốn thêm hoặc thay thế cấu hình hiện có hay không. đặt khóa disable_existing_loggers thành True trong LOGISTING dictConfig. Hoặc bạn có thể xác định lại một số hoặc tất cả các logger. "

Vì vậy, tôi cố gắng chỉ thêm dòng sau vào settings.py của tôi:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console':{ 
      'level': 'DEBUG', 
     }, 
    }, 
} 

... nhưng tôi nhận được một ngoại lệ:

<snip> 
    File "/usr/lib/python2.7/logging/config.py", line 575, in configure 
    '%r: %s' % (name, e)) 
ValueError: Unable to configure handler 'console': 'NoneType' object has no attribute 'split' 

Hội chợ đủ. Dường như muốn toàn bộ khối cấu hình. Vì vậy, tôi cố gắng những gì tôi nghĩ sẽ là giao diện điều khiển logger cấu hình đơn giản nhất:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'console':{ 
      'level': 'INFO', 
      'class': 'logging.StreamHandler', 
      'formatter': 'simple' 
     }, 
    }, 
    'loggers': { 
     'default': { 
      'handlers': ['console'], 
      'level': 'INFO', 
      'filters': [] 
     } 
    } 
} 

Ý định của tôi là để thiết lập các bản ghi cấp để INFO, nhưng tôi vẫn thấy một loạt các thông điệp DEBUG, và chuỗi MYFORMATTER không xuất hiện trong bất kỳ cách nào trong số họ.

Cuối cùng, với sự lạc quan mù quáng, tôi đã cố gắng này:

from django.utils.log import DEFAULT_LOGGING 
DEFAULT_LOGGING['handlers']['console']['level'] = 'INFO' 

tôi phải mất một cái gì đó khá rõ ràng ở đây.

BTW, tôi đang sử dụng Django 1.5.1.

+0

Bạn có thể quan tâm đến [sentry] (https://github.com/getsentry/sentry). –

Trả lời

3

Trả lời câu hỏi của riêng tôi ở đây, tôi đã kết thúc đi với những điều sau trong file settings.py:

import logging 

logging.basicConfig(
    level = logging.INFO, 
    format = " %(levelname)s %(name)s: %(message)s", 
) 
0

Bạn có thể làm điều này để thiết lập mức độ django logging:

import logging 
logging.disable(logging.INFO) 

logging.disable (lvl)

Cung cấp một mức lvl trọng cho tất cả các logger mà được ưu tiên hơn các logger của riêng cấp độ. Khi nhu cầu phát sinh lên tạm thời giảm lưu lượng ghi nhật ký xuống trên toàn bộ ứng dụng, chức năng này có thể hữu ích. Tác dụng của nó là vô hiệu hóa tất cả các cuộc gọi đăng nhập các cuộc gọi của mức độ nghiêm trọng và dưới đây, để nếu bạn gọi nó với giá trị của INFO, thì tất cả các sự kiện INFO và DEBUG sẽ bị hủy, trong khi mức độ nghiêm trọng CẢNH BÁO và ở trên sẽ được xử lý theo để cấp độ hiệu quả của trình ghi nhật ký. Để hoàn tác tác động của cuộc gọi đến logging.disable (lvl), hãy gọi logging.disable (logging.NOTSET).

http://docs.python.org/2/library/logging.html#logging.disable

+0

Hmm.Nhưng điều này không hoạt động nếu các logger cơ bản được cấu hình để in tại, nói, INFO và tôi muốn xem các thông báo DEBUG trên bàn điều khiển. – user2076663

+0

ok, bạn nói điều ngược lại trong câu hỏi của bạn;) – maazza

0

Tôi đã có một issue- tương tự tôi đã bỏ lỡ một "lớp học "từ một trong những người xử lý của tôi.

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