HomeLập trìnhPythonĐăng nhập bằng...

Đăng nhập bằng Python – Cách sử dụng nhật ký để gỡ lỗi các dự án Django của bạn


Mã hoàn hảo duy nhất là mã chưa bao giờ được viết. Là một nhà phát triển, bạn nhất định phải đối mặt với các lỗi và sẽ chịu trách nhiệm sửa lỗi chúng.

Nếu bạn đang viết mã bằng Python, bạn luôn có thể xem các thông báo lỗi của nó để biết điều gì đang xảy ra. Nhưng nếu xảy ra lỗi mà bạn không biết điều gì đang phá vỡ mã của mình thì sao?

Có thể có điều gì đó không ổn trong nền nhưng bạn không thể nhận ra nó. Bạn luôn có thể tắt và bật lại – hoặc thậm chí tốt hơn, bạn có thể kiểm tra nhật ký.

Ghi nhật ký là gì?

Nếu xảy ra lỗi hoặc ứng dụng của bạn quyết định hoạt động lạ, các tệp nhật ký của bạn sẽ có ích. Bạn có thể duyệt qua chúng và tìm ra chính xác ứng dụng đang gặp sự cố ở đâu và cách bạn có thể tái tạo những sự cố đó.

Bằng cách tái tạo vấn đề, bạn có thể tìm hiểu sâu hơn và tìm ra giải pháp hợp lý cho các lỗi. Thứ gì đó có thể mất vài giờ để phát hiện có thể chỉ mất vài phút để chẩn đoán với sự hiện diện của tệp nhật ký.

Cách ghi nhật ký hoạt động trong Django

Rất may, Django có hỗ trợ ghi nhật ký và hầu hết các công việc khó khăn đã được thực hiện bởi các nhà phát triển của nó. Django đi kèm với mô-đun ghi nhật ký tích hợp sẵn của Python để tận dụng việc ghi nhật ký hệ thống.

Mô-đun ghi nhật ký Python có bốn phần chính:

  1. Người khai thác gỗ
  2. xử lý
  3. bộ lọc
  4. Trình định dạng

Mọi thành phần được giải thích tỉ mỉ trong Tài liệu chính thức của Django. Tôi không muốn bạn bị choáng ngợp bởi sự phức tạp của nó, vì vậy tôi sẽ giải thích ngắn gọn từng phần một:

1. Máy ghi nhật ký

Logger về cơ bản là điểm vào của hệ thống ghi nhật ký. Đây là những gì bạn sẽ thực sự làm việc với tư cách là một nhà phát triển.

Khi bộ ghi nhật ký nhận được thông báo, mức nhật ký được so sánh với mức nhật ký của bộ ghi. Nếu nó giống hoặc vượt quá mức ghi của bộ ghi, tin nhắn được gửi đến trình xử lý để xử lý thêm. Các cấp nhật ký là:

Đọc thêm  Cách chuyển đổi chuỗi thành số nguyên trong Python

  • GỠ LỖI: Thông tin hệ thống cấp thấp
  • THÔNG TIN: Thông tin hệ thống chung
  • CẢNH BÁO: Các vấn đề nhỏ liên quan đến thông tin
  • LỖI: Các vấn đề chính liên quan đến thông tin
  • BẠO KÍCH: Thông tin liên quan đến vấn đề nghiêm trọng

2. Người xử lý

Trình xử lý về cơ bản xác định điều gì sẽ xảy ra với từng thông báo trong trình ghi nhật ký. Nó có các cấp nhật ký giống như Loggers. Tuy nhiên, về cơ bản, chúng ta có thể xác định cách chúng ta muốn xử lý từng cấp nhật ký.

Ví dụ: LỖI thông báo cấp nhật ký có thể được gửi trong thời gian thực tới nhà phát triển, trong khi THÔNG TIN cấp nhật ký chỉ có thể được lưu trữ trong một tệp hệ thống.

Về cơ bản, nó cho hệ thống biết phải làm gì với tin nhắn như viết nó trên màn hình, tệp hoặc ổ cắm mạng

3. Bộ lọc

Một bộ lọc có thể nằm giữa một Tiều phu và một xử lý. Nó có thể được sử dụng để lọc bản ghi nhật ký.

Ví dụ: trong BẠO KÍCH tin nhắn, bạn có thể đặt bộ lọc chỉ cho phép một nguồn cụ thể được xử lý.

4. Trình định dạng

Như tên gợi ý, trình định dạng mô tả định dạng của văn bản sẽ được hiển thị.

Bây giờ chúng ta đã đề cập đến những điều cơ bản, hãy tìm hiểu sâu hơn bằng một ví dụ thực tế. Bấm vào đây để mã nguồn.

Xin lưu ý rằng hướng dẫn này giả định rằng bạn đã quen thuộc với những kiến ​​thức cơ bản về Django.

Thiết lập dự án

Đầu tiên, tạo một môi trường ảo gọi là venv bên trong thư mục dự án của bạn django-logging-tutorial bằng lệnh bên dưới và kích hoạt nó.

mkdir django-logging-tutorial
virtualenv venv
source venv/bin/activate

Tạo một dự án Django mới gọi là django_logging_tutorial. Lưu ý rằng tên thư mục dự án có dấu gạch ngang trong khi tên dự án có dấu gạch dưới (- so với _). Chúng tôi cũng sẽ chạy nhanh một loạt các lệnh để thiết lập dự án của chúng tôi.

Cách định cấu hình tệp nhật ký của bạn

Đầu tiên chúng ta hãy thiết lập settings.py tập tin của dự án của chúng tôi. Lưu ý – hãy lưu ý nhận xét của tôi trong mã sẽ giúp bạn hiểu rõ hơn về quy trình này.

Đọc thêm  Xử lý tệp trong Python – Cách tạo, đọc và ghi vào tệp

Mã này cũng được đề cập trong ví dụ thứ 3 của tài liệu chính thức và trong hầu hết các dự án của chúng tôi, nó sẽ hoạt động tốt. Tôi đã sửa đổi một chút để làm cho nó mạnh mẽ hơn.


LOGGING = {
    'version': 1,
    # The version number of our log
    'disable_existing_loggers': False,
    # django uses some of its own loggers for internal operations. In case you want to disable them just replace the False above with true.
    # A handler for WARNING. It is basically writing the WARNING messages into a file called WARNING.log
    'handlers': {
        'file': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': BASE_DIR / 'warning.log',
        },
    },
    # A logger for WARNING which has a handler called 'file'. A logger can have multiple handler
    'loggers': {
       # notice the blank '', Usually you would put built in loggers like django or root here based on your needs
        '': {
            'handlers': ['file'], #notice how file variable is called in handler which has been defined above
            'level': 'WARNING',
            'propagate': True,
        },
    },
}

Nếu bạn đọc nhận xét của tôi ở trên, bạn có thể nhận thấy rằng phần logger chỉ trống. Về cơ bản có nghĩa là bất kỳ logger.

Hãy cẩn thận với cách tiếp cận này vì hầu hết công việc của chúng tôi có thể hài lòng với các trình ghi nhật ký Django tích hợp như django.request hoặc django.db.backends.

Ngoài ra, để đơn giản, tôi chỉ sử dụng một tệp để lưu trữ nhật ký. Tùy thuộc vào trường hợp sử dụng của bạn, bạn cũng có thể chọn gửi email khi BẠO KÍCH hoặc LỖI tin nhắn được gặp phải.

Để tìm hiểu thêm về điều này, tôi khuyến khích bạn đọc phần xử lý của tài liệu. Các tài liệu có thể khiến bạn cảm thấy choáng ngợp khi mới bắt đầu, nhưng bạn càng quen với việc đọc chúng, bạn càng có thể khám phá ra các cách tiếp cận thú vị hoặc tốt hơn khác.

Đừng lo lắng nếu đây là lần đầu tiên bạn làm việc với tài liệu. Luôn luôn có một lần đầu tiên cho tất cả mọi thứ.

Tôi đã giải thích hầu hết mã trong các nhận xét, nhưng chúng tôi vẫn chưa đề cập đến propagate chưa. Nó là gì?

Khi nào propagate được đặt là Thật, một đứa trẻ sẽ truyền tất cả các cuộc gọi ghi nhật ký của chúng cho cha mẹ. Điều này có nghĩa là chúng ta có thể định nghĩa một trình xử lý ở gốc (cha mẹ) của cây ghi nhật ký và tất cả các lệnh gọi ghi nhật ký trong cây con (con) sẽ chuyển đến trình xử lý được xác định trong cha mẹ.

Đọc thêm  Ví dụ về câu lệnh If-Else trong Python

Cũng cần lưu ý rằng hệ thống phân cấp rất quan trọng ở đây. Chúng ta cũng có thể thiết lập nó như Thật trong dự án của chúng tôi vì nó sẽ không thành vấn đề trong trường hợp của chúng tôi vì không có cây con.

Cách kích hoạt nhật ký trong Python

Bây giờ, chúng ta cần tạo một số thông điệp bản ghi để có thể thử cấu hình của mình trong settings.py.

Hãy có một trang chủ mặc định chỉ hiển thị ‘Xin chào người đọc FreeCodeCamp.org :)’ và mỗi khi ai đó truy cập trang, chúng tôi ghi lại một CẢNH BÁO tin nhắn trong chúng tôi warning.log tệp dưới dạng ‘Trang chủ được truy cập vào lúc 29-08-2021 22:23:33,551543 giờ!’

Chuyển đến ứng dụng của bạn logging_examplevà trong views.py bao gồm mã sau đây. Hãy chắc chắn rằng bạn đã thêm logging_example bên trong INSTALLED_APPS Trong setting.py.


from django.http import HttpResponse
import datetime
# import the logging library
import logging
# Get an instance of a logger
logger = logging.getLogger(__name__)

def hello_reader(request):
    logger.warning('Homepage was accessed at '+str(datetime.datetime.now())+' hours!')
    return HttpResponse("<h1>Hello FreeCodeCamp.org Reader :)</h1>")

trong dự án urls.pythêm đoạn mã sau để khi chúng ta truy cập vào trang chủ sẽ gọi đúng chức năng.

from django.contrib import admin
from django.urls import path
from logging_example import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.hello_reader, name="hello_reader")
]

Thời gian cho một số thử nghiệm

Cuối cùng, thiết lập đơn giản của chúng tôi đã hoàn tất. Tất cả những gì chúng ta cần làm bây giờ là kích hoạt máy chủ và kiểm tra nhật ký của mình.

Chạy máy chủ phát triển bằng lệnh này:

python manage.py runserver

Bây giờ, đi đến trang chủ của bạn 127.0.0.1:8000 nơi bạn sẽ được chào đón bằng tin nhắn mà chúng tôi đã mã hóa. Bây giờ kiểm tra của bạn warning.log tập tin trong đường dẫn đã tạo. Đầu ra mẫu được hiển thị bên dưới:

Homepage was accessed at 2021-08-29 22:38:29.922510 hours!
Homepage was accessed at 2021-08-29 22:48:35.088296 hours!

Đó là nó! Bây giờ bạn đã biết cách thực hiện đăng nhập trong Django. Nếu bạn có bất kỳ câu hỏi nào, chỉ cần gửi cho tôi một tin nhắn. Tôi hứa sẽ giúp 🙂

Nếu bạn thấy bài viết của tôi hữu ích và muốn đọc thêm, vui lòng xem một số hướng dẫn về Django tại blog Techflow360.com của tôi.



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status