2015-05-06 21 views
8

Bình theo mặc định sẽ ghi nhật ký những thứ như yêu cầu GET và POST trực tiếp bằng thẻ INFO. Khi thực hiện một logger tùy chỉnh, chúng được đăng lên cùng một logger và lộn xộn lớp INFO của tôi. Có cách nào để hạ cấp chúng xuống một lớp khác như DEBUG không?Thay đổi nhật ký Flask từ INFO thành DEBUG

Đây là logger tôi sử dụng:

# create logger 
FORMAT = '%(asctime)s - %(module)s - %(levelname)s - Thread_name: %(threadName)s - %(message)s' 
logging.basicConfig(
    format=FORMAT, datefmt='%m/%d/%Y %I:%M:%S %p', 
    filename='wizard/logs/example.log', level=logging.DEBUG) 

Trả lời

6

Tôi không chắc chắn về một cách hạ cấp độ nhật ký yêu cầu (vì nó thường được quy định rõ ràng trong các mã như logging.info (" .. . ")) nhưng những điều sau đây có thể giúp bạn giảm độ rách của Flask.

Python cho phép bạn có nhiều nhật ký, mỗi trình ghi có cấp nhật ký riêng. Bạn có thể sửa đổi bất kỳ trình ghi nhật ký hiện có nào nếu bạn biết tên mô-đun đó nằm trong hoặc tên được đăng ký như được mô tả here.

Ví dụ:

import logging 
logger = logging.getLogger("mypackage.mymodule") # or __name__ for current module 
logger.setLevel(logging.ERROR) 

ở trên có thể được thực hiện đối với bất kỳ mô-đun python. Flask cung cấp một logger cho mỗi ứng dụng. Bạn có thể lấy một tham chiếu đến nó như thế này:

import logging 
from flask import Flask 
app = Flask(__name__) # or instead of __name__ provide the name of the module 
app.logger.setLevel(logging.ERROR) 
+0

Điều đúng là bằng cách đặt mức trong ứng dụng thành L ERI, mặc dù nó xóa nhật ký INFO khỏi Flask, nó không cho phép tôi có nhật ký cấp DEBUG mà không thấy INFO, phải không? Tôi sẽ phải biến tất cả các bản ghi DEBUG của tôi thành ERROR, ít nhất, để làm cho nó hoạt động. Ngay cả khi tôi sử dụng chức năng getLogger, nó vẫn có vẻ như Flask ghi nhật ký INFO vào logger của tôi ... – ZekeDroid

+0

Bạn đã tạo một trình ghi nhật ký tùy chỉnh như được mô tả bởi @foobarto? Và đó là báo cáo cả nhật ký tùy chỉnh và nhật ký bình? – amccormack

+0

không, chỉ cần làm, hoạt động tốt bây giờ :) – ZekeDroid

6

Trong thực tế, có một cách để hạ cấp một bản ghi nhật ký từ INFO để DEBUG (ngay cả khi nó đã được phát ra bằng một cuộc gọi như info()). Điều này có thể đạt được bằng cách sử dụng một bộ lọc gắn liền với một logger. Theo số docs bộ lọc kiểm tra:

Bản ghi được chỉ định có được ghi lại không? Trả về số không đối với số không, không đối với có. Nếu được cho là phù hợp, hồ sơ có thể được sửa đổi tại chỗ theo phương pháp này.

Vì vậy, một bộ lọc có thể thay đổi mức độ kỷ lục log (levelnolevelname thuộc tính). Sau đó, một người xử lý có thể cho phép hoặc hủy bỏ hồ sơ này dựa trên cấp độ mới.

+0

Đây là câu trả lời đúng, không phải là một công việc vụng về xung quanh như khác. –

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