Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Modul pengelogan Python dinyahsulit: mendedahkan bahagian yang tidak diketahui

Modul pengelogan Python dinyahsulit: mendedahkan bahagian yang tidak diketahui

王林
王林ke hadapan
2024-03-08 08:19:17350semak imbas

Python logging 模块解密:揭示其不为人知的一面

1. Tahap log: kawalan maklumat log yang tepat

Modul

log mentakrifkan lima tahap log standard: DEBUG, INFO, AMARAN, RALAT dan KRITIKAL. Tahap ini menentukan kepentingan dan keterukan mesej untuk dilog. Secara lalai, pengelogan hanya mencatatkan mesej peringkat AMARAN dan ke atas. Anda boleh memperhalusi tingkah laku pembalakan dengan menetapkan tahap pembalak. Contohnya:

import logging

# 设置 root 日志器的级别为 INFO
logging.basicConfig(level=logging.INFO)

2. Format log: output log tersuai

Modul pengelogan menyediakan mekanisme pemformatan log yang berkuasa yang membolehkan anda menyesuaikan penampilan mesej log. Format StringMenentukan maklumat yang terkandung dalam mesej log, seperti cap masa, tahap log, teks mesej dan surih tindanan. Format lalai ialah:

"[%(asctime)s] %(levelname)s %(module)s.%(funcName)s: %(message)s"

Anda boleh menyesuaikan format menggunakan kod berikut:

# 设置自定义日志格式
logging.basicConfig(fORMat="%(asctime)s %(levelname)-8s %(message)s")

3. Pemproses log: destinasi keluaran log lanjutan

Pengendali bertanggungjawab menghantar mesej log ke destinasi tertentu, seperti fail, konsol atau pelayan jauh. Modul pengelogan menyediakan beberapa pengendali terbina dalam seperti StreamHandler dan FileHandler.

Mencipta pemproses tersuai juga sangat mudah. Anda perlu membuat kelas dan mengatasi kaedah pemegang, yang menulis mesej log kepada sasaran. Contohnya, untuk menulis log pada fail tersuai:

class MyFileHandler(logging.FileHandler):
def __init__(self, filename):
super().__init__(filename)

# 将自定义处理器添加到 root 日志器
logging.getLogger().addHandler(MyFileHandler("my_log.txt"))

4. Penapis log: tapis mesej log yang tidak diperlukan

Penapis membolehkan anda menapis mesej log berdasarkan kriteria tertentu. Anda boleh membuat penapis berdasarkan tahap log, teks mesej atau kriteria lain. Penapis boleh dilampirkan pada pemproses untuk membenarkan hanya mesej yang memenuhi kriteria untuk dilalui.

Sebagai contoh, penapis yang mengabaikan mesej dengan tahap AMARAN:

import logging

# 创建筛选器忽略 WARNING 级别的消息
filter = logging.Filter()
filter.filter = lambda record: record.levelno < logging.WARNING

# 将筛选器添加到 root 日志器的处理器
logging.getLogger().handlers[0].addFilter(filter)

5. Pengurusan konteks log: pengelogan elegan

logging.LoggerContextManager Pengurus konteks menyediakan cara ringkas untuk log mesej dalam blok. Ini berguna untuk menukar tahap log buat sementara waktu atau melumpuhkan pengelogan.

with logging.LoggerContextManager():
# 临时将日志级别设置为 DEBUG
logging.getLogger().setLevel(logging.DEBUG)

# 在块内记录 DEBUG 级的消息
logging.debug("调试信息")

6 Kemahiran lanjutan:

  • Gunakan konfigurasi kamus: Gunakan konfigurasi kamus untuk menyediakan pilihan konfigurasi yang lebih fleksibel.
  • Buat tahap log anda sendiri: Lanjutkan tahap terbina dalam dengan menulis tahap log tersuai.
  • Gunakan rangka kerja pengelogan: seperti structlog atau loguru, yang menyediakan ciri termaju dan kebolehskalaan.
  • Pengelogan Asynchronous: Tingkatkan prestasi aplikasi besar dengan menggunakan pemproses tak segerak.
  • Pengecualian pengelogan: Gunakan logging.exception() atau logging.log_exception() untuk mencatat surih tindanan pengecualian.

Kesimpulan:

Modul pengelogan

python ialah alat yang berkuasa yang boleh digunakan untuk mengelog aktiviti aplikasi dengan cekap. Dengan memahami tahap log, format log, pemproses log, penapis log dan teknik lanjutan, anda boleh memanfaatkan sepenuhnya keupayaan pembalakan dan mencipta penyelesaian pembalakan yang fleksibel dan bermakna untuk aplikasi anda.

Atas ialah kandungan terperinci Modul pengelogan Python dinyahsulit: mendedahkan bahagian yang tidak diketahui. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam