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

Modul pengelogan Python dinyahsulit: mendedahkan bahagian yang tidak diketahui

王林
Lepaskan: 2024-03-08 08:19:17
ke hadapan
405 orang telah melayarinya

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)
Salin selepas log masuk

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"
Salin selepas log masuk

Anda boleh menyesuaikan format menggunakan kod berikut:

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

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"))
Salin selepas log masuk

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)
Salin selepas log masuk

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("调试信息")
Salin selepas log masuk

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!

sumber:lsjlt.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan