© 2020, Developed by Hieu Dev

Cách ghi Log APIs trong Django Rest framework

Khi bạn làm việc với một dự án phần mềm, trong mỗi dự án nhất định bạn càng ghi log, hay nói cách khác là lưu vết lại quá trình xử lý của một đoạn code, chức năng, ứng dụng, hoặc ghi lại lỗi xảy ra.

Cách ghi Log APIs trong Django Rest framwork


Với những hệ thống nhỏ, có thể bạn sẽ bỏ qua việc ghi log này, nhưng đối với các dự án lớn, bạn cần ghi logs để lưu vết lại quá trình xử lý của 1 đoạn code/chức năng/ứng dụng, hoặc ghi lại lỗi xảy ra (nếu có).

DRF API Logger

Có rất nhiều cách để ghi log, chẳng hạn như bạn có thể print ra màn hình, hay kết nối FTP đến server khác để thực hiện lưu file và truyền file sang server lưu log, hoặc gửi qua service, email đến nhà phát triển. Và cách sau đây, mình sẽ hướng dẫn đến mọi người là thực hiện ghi log bằng cách insert log vào một bảng trong cơ sở dữ liệu.

Cụ thể, chúng ta sẽ sử dụng DRF API Logger - trình ghi nhật ký cho dự án Django Rest framework. Nó sẽ ghi lại tất cả thông tin API của một application/json. Cụ thể như:
  1. URL
  2. Request Body
  3. Request Headers
  4. Request Method
  5. API Response
  6. Status Code
  7. API Call Time
  8. Server Execution Time
  9. Client IP Address
Bạn có thể log API vào Database hoặc lắng nghe các logger signals tùy vào các trường hợp khác nhau hoặc bạn có thể thực hiện cả hai.

Logger sử dụng một chuỗi riêng để chạy, vì vậy nó sẽ không ảnh hưởng đến thời gian phản hồi API của bạn.

Log APIs và lưu vào database trong DRF 

Đầu tiên, để viết log bạn cần cài đặt DRF API Logger, với command sau:

pip install drf-api-logger

Tiếp theo là thêm nó vào INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'django.contrib.staticfiles',

    'drf_api_logger',  #  Add here
]

Và thêm chúng vào MIDDLEWARE:
MIDDLEWARE = [
    ...
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    'drf_api_logger.middleware.api_logger_middleware.APILoggerMiddleware', # Add here
]

Để thực hiện lưu logs vào database, trong settings.py, bạn thêm dòng code sau:

DRF_API_LOGGER_DATABASE = True  # Default to False


Nếu như không có dòng code trên, mặc định nó sẽ là False, tức là bạn cần thêm dòng code này để lưu mọi request vào database.

Và bây giờ bạn cần thực hiện migration để migrate bảng log này trong database:

py manage.py makemigrations
py manage.py migrate

Bây giờ bạn chỉ cần chạy project và thực hiện các request và kiểm tra data trong database. Cụ thể các kết quả sẽ như sau:

Cách ghi Log APIs trong Django Rest framework


 Cụ thể những thông tin được lưu trên mỗi dòng dữ liệu sẽ như sau:

Cách ghi Log APIs trong Django Rest framework


Lời kết

Các thao tác thực hiện rất đơn giản, có rất nhiều thư viện hỗ trợ ghi log, nhưng DRF API Logger ổn định, đơn giản và dễ sử dụng. Các bạn có thể xem chi tiết hơn về thư viện tại đây:


Mong bài viết hữu ích. Chúc bạn thành công.

by, Chee 🧀

3 Nhận xét

Mới hơn Cũ hơn