Python mở rộng lớp logger

Ghi nhật ký là phần quan trọng nhất của bất kỳ ứng dụng hoặc quy trình nào bạn tạo, vì nó giúp bạn gỡ lỗi hoặc theo dõi những gì đang diễn ra. Bản thân việc ghi nhật ký là một chủ đề rất rộng lớn nhưng cực kỳ hữu ích khi bạn muốn thực hiện một số tác dụng phụ hoặc chuyển hướng đầu ra của mình sang một số dịch vụ khác hoặc thực hiện một số tính toán phụ, v.v.

Có thể định cấu hình cao theo thiết kế, chúng tôi có thể thêm các chức năng mở rộng của các trình ghi nhật ký hiện có, sử dụng

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
3 tùy chỉnh

Chúng tôi sẽ cố gắng mở rộng chức năng của trình ghi nhật ký hiện có tới

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
4 trường hợp ngoại lệ xảy ra trong quá trình thực thi mã. Hãy để chúng tôi tạo một
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
5 bằng thư viện tích hợp sẵn
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
6

import logging
logger: logging.Logger = logging.getLogger[]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đoạn mã trên sẽ trả về một phiên bản trình ghi nhật ký

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
0, vì chúng tôi không đề cập rõ ràng bất kỳ tên nào. Nếu bạn muốn một phiên bản
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
1 được đặt tên, bạn có thể chuyển hàm
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
2 sang hàm
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
3

Bây giờ chúng ta hãy tạo một

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
4 tùy chỉnh để xử lý các bản ghi và thực hiện một số tác dụng phụ. Chúng ta có thể kế thừa từ lớp cơ sở trừu tượng
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
5 để tạo Trình xử lý tùy chỉnh của mình

Lớp cơ sở

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
5 cung cấp nhiều hook mà bạn có thể ghi đè. Chúng tôi sẽ ghi đè móc
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
7 cho yêu cầu của chúng tôi

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Chúng tôi đã thêm tập hợp các câu lệnh để chặn ngoại lệ khỏi bản ghi và tạo định dạng

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
8

Móc

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
7 sẽ nhận được
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
20 sẽ chứa tất cả các chi tiết liên quan đến bản ghi như tin nhắn, dấu thời gian, số dòng, thông tin ngoại lệ, v.v. Chúng tôi cũng đã thêm một phương thức mẫu
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
21 để gửi dấu vết ngăn xếp được định dạng cho người dùng

Bây giờ chúng ta hãy hoàn thành chức năng

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
21. Chúng tôi sẽ sử dụng
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
23 để gửi e-mail. Bạn cũng có thể sử dụng
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
24 để thay thế

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Chúng tôi đang sử dụng thư viện

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
25 để kết nối với
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
26 và gửi e-mail

Tôi đang đọc

import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
27 và
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
28 từ các biến môi trường. Chúng sẽ được yêu cầu để gửi e-mail đến địa chỉ đích bằng bản ghi
import logging
class MailHandler[logging.Handler]:

    def emit[self, record: logging.LogRecord] -> None:
        if record.exc_info:
            exception = "".join[traceback.format_exception[*record.exc_info]]
        else:
            exception = "".join[traceback.format_exception[*sys.exc_info[]]]
        self._send_mail[exception]
26 được định cấu hình của bạn

Làm cách nào để thêm trình xử lý vào trình ghi Python?

ghi nhật ký trăn. .
Sự miêu tả. - addHandler[] là một phương thức đối tượng logger sử dụng để thêm trình xử lý vào logger
Chữ ký. addHandler[xử lý]
phương thức này lấy trình xử lý làm đối số trả về Không có. .
trình xử lý có thể là bất cứ thứ gì từ sau
StreamHandler. .
Chương trình
# nhật ký nhập khẩu

Ghi nhật ký getLogger [__ tên __] Python là gì?

getLogger[name] thường được thực thi. Hàm getLogger[] chấp nhận một đối số duy nhất - tên của trình ghi nhật ký. Nó trả về một tham chiếu đến một phiên bản trình ghi với tên được chỉ định nếu được cung cấp hoặc gốc nếu không . Nhiều lệnh gọi getLogger[] có cùng tên sẽ trả về một tham chiếu đến cùng một đối tượng logger.

Python cấp ghi nhật ký cao nhất là gì?

Mô-đun ghi nhật ký tích hợp của Python cung cấp chức năng dễ sử dụng và năm cấp độ ghi nhật ký có mức độ nghiêm trọng tăng dần. gỡ lỗi [10], mức ghi nhật ký thấp nhất đến quan trọng [50] , mức cao nhất.

Làm cách nào để sử dụng ngoại lệ trình ghi nhật ký trong Python?

Để ghi lại một ngoại lệ trong Python, chúng ta có thể sử dụng mô-đun ghi nhật ký và thông qua đó, chúng ta có thể ghi lại lỗi . Ghi nhật ký một ngoại lệ trong python có lỗi có thể được thực hiện trong phần ghi nhật ký. phương pháp ngoại lệ[]. Chức năng này ghi lại một thông báo có mức LỖI trên bộ ghi này.

Chủ Đề