Rumah >pembangunan bahagian belakang >Tutorial Python >Menguasai Pengelogan Python: Daripada Asas kepada Teknik Lanjutan

Menguasai Pengelogan Python: Daripada Asas kepada Teknik Lanjutan

Barbara Streisand
Barbara Streisandasal
2024-12-04 08:25:12629semak imbas

Melog masuk Python bukan sekadar menyahpepijat—ia mengenai menjejak, memantau dan memahami gelagat aplikasi anda. Sama ada anda seorang pemula atau pembangun yang berpengalaman, panduan ini merangkumi semua aspek pengelogan, daripada persediaan asas kepada teknik lanjutan.

Mastering Python Logging: From Basics to Advanced Techniques

Pengenalan
Apakah pembalakan?
Pengelogan ialah mekanisme untuk merekod dan menjejaki peristiwa semasa pelaksanaan program, membantu pembangun nyahpepijat, memantau dan menganalisis aplikasi mereka dengan berkesan.

Mengapa pembalakan penting?
Tidak seperti cetakan, pengelogan menawarkan fleksibiliti, kebolehskalaan dan kebolehkonfigurasian, menjadikannya pilihan yang mantap untuk kedua-dua skrip kecil dan aplikasi besar.

Apa yang diliputi oleh blog ini
Menyediakan pengelogan asas
Menulis log ke fail
Mencipta pembalak tersuai
Memformat output log
Teknik lanjutan seperti putaran log dan konfigurasi
Amalan terbaik dan kesilapan biasa

Apakah Log dalam Python?
Memperkenalkan modul pengelogan.
Terangkan tahap pembalakan:
DEBUG: Maklumat terperinci untuk mendiagnosis isu.
INFO: Pengesahan bahawa program berfungsi seperti yang diharapkan.
AMARAN: Sesuatu yang tidak dijangka berlaku, tetapi program masih boleh dijalankan.
RALAT: Masalah menyebabkan operasi gagal.
KRITIKAL: Ralat serius yang mungkin menghentikan program.

Menyediakan Pengelogan Asas
Perkenalkan pengelogan.basicConfig.
Berikan contoh mudah:

import logging

# Basic configuration
logging.basicConfig(level=logging.INFO)

# Logging messages
logging.debug("Debug message")
logging.info("Info message")
logging.warning("Warning message")
logging.error("Error message")
logging.critical("Critical message")

Output
Secara lalai, hanya mesej pada tahap AMARAN atau lebih tinggi dipaparkan pada konsol. Contoh di atas menghasilkan:

AMARAN:root:Mesej amaran
ERROR:root:Mesej ralat
KRITIKAL:root:Mesej kritikal

Menulis Log ke Fail

logging.basicConfig(filename="app.log", 
                    level=logging.DEBUG, 
                    format="%(asctime)s - %(levelname)s - %(message)s")

logging.info("This will be written to a file.")

Terangkan parameter biasa dalam basicConfig:
nama fail: Menentukan fail log.
mod fail: 'w' untuk menulis ganti atau 'a' untuk menambah.
format: Menyesuaikan struktur mesej log.

Membuat Logger Tersuai
Mengapa menggunakan pembalak tersuai? Untuk pembalakan modular dan lebih terkawal.
Contoh:

import logging

# Create a custom logger
logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)

# Create handlers
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("custom.log")

# Set levels for handlers
console_handler.setLevel(logging.INFO)
file_handler.setLevel(logging.ERROR)

# Create formatters and add them to handlers
formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s")
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# Add handlers to the logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# Log messages
logger.info("This is an info message.")
logger.error("This is an error message.")

** Memformat Log**
Terangkan atribut rekod log:
%(asctime)s: Cap masa.
%(levelname)s: Tahap mesej log.
%(message)s: Mesej log sebenar.
%(nama)s: Nama pembalak.
Pemformatan lanjutan:

logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                    datefmt="%Y-%m-%d %H:%M:%S",
                    level=logging.DEBUG)

Putaran Log
Memperkenalkan RotatingFileHandler untuk mengurus saiz fail log.
Contoh:

from logging.handlers import RotatingFileHandler

# Create a logger
logger = logging.getLogger("rotating_logger")
logger.setLevel(logging.DEBUG)

# Create a rotating file handler
handler = RotatingFileHandler("app.log", maxBytes=2000, backupCount=3)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)

logger.addHandler(handler)

# Log messages
for i in range(100):
    logger.info(f"Message {i}")

Menggunakan logging.config untuk Konfigurasi Kompleks
Tunjukkan cara menggunakan kamus konfigurasi:

import logging

# Basic configuration
logging.basicConfig(level=logging.INFO)

# Logging messages
logging.debug("Debug message")
logging.info("Info message")
logging.warning("Warning message")
logging.error("Error message")
logging.critical("Critical message")

Amalan Terbaik untuk Pembalakan
Gunakan mesej log yang bermakna.
Elakkan data sensitif dalam log.
Gunakan tahap DEBUG dalam pembangunan dan tahap lebih tinggi dalam pengeluaran.
Putar fail log untuk mengelakkan masalah storan.
Gunakan nama logger unik untuk modul yang berbeza.

Kesilapan Biasa
Terlalu banyak menggunakan DEBUG dalam pengeluaran.
Terlupa untuk menutup pengendali fail.
Tidak menggunakan fail log yang berasingan untuk ralat.

Topik Lanjutan
Pengelogan Asynchronous
Untuk aplikasi berprestasi tinggi, gunakan QueueHandler untuk memunggah tugas pengelogan secara tidak segerak.

Log Berstruktur
Log mesej sebagai JSON untuk menjadikannya boleh dibaca mesin, terutamanya untuk sistem seperti ELK Stack.

Perpustakaan Pihak Ketiga
Terokai alatan seperti loguru untuk pengelogan yang lebih ringkas dan berkuasa.

Kesimpulan
Pengelogan bukan hanya tentang penyahpepijatan—ia tentang memahami aplikasi anda. Dengan menguasai modul pengelogan Python, anda boleh memastikan projek anda teguh, boleh diselenggara dan mudah dinyahpepijat.

Ada soalan atau cadangan? Kongsi pendapat anda dalam komen di bawah!

Atas ialah kandungan terperinci Menguasai Pengelogan Python: Daripada Asas kepada Teknik Lanjutan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn