Rumah >pembangunan bahagian belakang >Tutorial Python >Mata pengetahuan modul pengelogan Python didedahkan: soalan biasa semuanya di satu tempat
Prinsip asas modul pembalakan ialah mencipta pembalak (logger) dan kemudian merekodkan mesej dengan memanggil kaedah pembalak. Pembalak mempunyai tahap yang menentukan mesej yang akan dilog. Modul pengelogan mentakrifkan beberapa tahap yang telah ditetapkan, termasuk DEBUG, INFO, AMARAN, RALAT dan KRITIKAL.
import logging # 创建一个名为 "my_logger" 的记录器,并设置其级别为 INFO logger = logging.getLogger("my_logger") logger.setLevel(logging.INFO)
Seorang pembalak boleh log mesej melalui kaedahnya:
# 记录一条 INFO 级别的消息 logger.info("This is an INFO message") # 记录一条 WARNING 级别的消息 logger.warning("This is a WARNING message") # 记录一条 ERROR 级别的消息 logger.error("This is an ERROR message")
Pengendali log menulis mesej log ke destinasi tertentu, seperti konsol, fail atau rangkaianpelayan. Modul pengelogan menyediakan beberapa pengendali yang telah ditetapkan:
# 创建一个控制台处理程序 handler = logging.StreamHandler() # 创建一个文件处理程序,将日志写入文件 "my_log.txt" handler = logging.FileHandler("my_log.txt")
Pengendali boleh dilampirkan pada pembalak dengan menambahkan pada pembalak:
# 将处理程序添加到记录器 logger.addHandler(handler)
Pemformat log (fORMatter) mengawal penampilan mesej log. Modul pengelogan menyediakan beberapa pemformat yang dipratentukan:
# 创建一个基本格式器 formatter = logging.BasicFormatter() # 使用自定义格式字符串创建自定义格式器 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
Format boleh dilampirkan pada pengendali dengan menambahkan pada pengendali:
# 将格式器添加到处理程序 handler.setFormatter(formatter)
1. Bagaimana untuk menetapkan tahap pengelogan dalam skrip Python?
import logging # 设置根日志记录器的级别为 INFO logging.basicConfig(level=logging.INFO)
2. Bagaimana untuk log pengecualian?
try: # 尝试执行一些代码 except Exception as e: # 记录异常 logger.error(e, exc_info=True)
3. Bagaimana untuk melumpuhkan pengendali tertentu?
# 禁用控制台处理程序 logger.removeHandler(handler)
4. Bagaimana untuk menggunakan format log tersuai?
# 使用自定义格式字符串创建自定义格式器 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") # 将格式器添加到处理程序 handler.setFormatter(formatter)
5. Bagaimana untuk menangkap pengecualian yang tidak ditangkap dan logkannya ke fail?
import sys import logging def exception_handler(type, value, traceback): # 记录未捕获的异常 logger.error(value, exc_info=(type, value, traceback)) sys.excepthook = exception_handler
Python ialah alat berkuasa yang membantu anda mengelog dan memproses mesej aplikasi dengan mudah. Dengan menguasai perkara utamanya, anda boleh menggunakan modul pengelogan dengan berkesan untuk nyahpepijat, menyelesaikan masalah dan menganalisis tingkah laku aplikasi anda.
Atas ialah kandungan terperinci Mata pengetahuan modul pengelogan Python didedahkan: soalan biasa semuanya di satu tempat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!