Pilih tahap log yang betul
ModulLogging menyediakan berbilang tahap logging, daripada DEBUG kepada KRITIKAL. Memilih tahap log yang sesuai adalah penting kerana ia menentukan berapa banyak maklumat yang direkodkan. Untuk persekitaran pengeluaran, tahap INFO atau WARN harus digunakan untuk mengelakkan pembalakan yang berlebihan.
Kod demo:
import logging logging.basicConfig(level=logging.INFO) logging.debug("This is a debug message") logging.info("This is an info message") logging.warning("This is a warning message")
Menimbal mesej log
Kurangkan bilangan penulisan fail log dengan menggunakan penimbal. Penampan membenarkan berbilang mesej log dikumpul ke dalam satu kelompok sebelum ditulis ke cakera. Ini boleh meningkatkan prestasi dengan ketara, terutamanya untuk operasi pembalakan yang kerap.
Kod demo:
import logging logger = logging.getLogger(__name__) # 使用更长的缓冲区大小,以减少写入次数 logger.handlers[0].buffer = 1000
Gunakan pengelogan tak segerak
Untuk aplikasi berprestasi tinggi, pengelogan tak segerak adalah kritikal. Ia membolehkan operasi pembalakan dilakukan di latar belakang benang, mengelakkan daripada menyekat utas utama. Pembalak tak segerak tersedia melalui modul concurrent_log_handler
.
Kod demo:
import logging import concurrent_log_handler logger = logging.getLogger(__name__) # 创建异步日志记录器 handler = concurrent_log_handler.ConcurrentRotatingFileHandler("my_log.log") logger.addHandler(handler)
Mampatkan fail log
Memampatkan fail log boleh mengurangkan saiz fail log, dengan itu meningkatkan kecekapan ruang cakera dan kelajuan pemprosesan fail log. Modul Pengelogan boleh dikonfigurasikan untuk memampatkan fail log sebelum menulis ke cakera.
Kod demo:
import logging # 配置日志文件压缩 handler = logging.FileHandler("my_log.log", "w", encoding="utf-8") handler.setFORMatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")) handler.addFilter(logging.Filter(compress_log_entries=True)) logger.addHandler(handler)
Elakkan merekod maklumat sensitif
Melog maklumat sensitif, seperti kata laluan atau data peribadi, boleh menjejaskan keselamatan aplikasi. Elakkan daripada mengelog maklumat ini atau gunakan penyulitan untuk melindungi data ini.
Kod demo:
import logging # 使用掩码过滤敏感信息 handler = logging.FileHandler("my_log.log", "w", encoding="utf-8") handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")) handler.addFilter(logging.Filter(exclude_patterns=["your_sensitive_pattern"])) logger.addHandler(handler)
Gunakan pemformat tersuai
Modul Pengelogan menyediakan fleksibiliti pemformat tersuai, membolehkan pengguna mengawal format output mesej log. Pemformat tersuai boleh membantu mengurangkan saiz mesej log dan meningkatkan kecekapan penghuraian.
Kod demo:
import logging class MyFormatter(logging.Formatter): def format(self, record): return f"{record.levelname}: {record.message}" # 使用自定义格式器 handler = logging.FileHandler("my_log.log", "w", encoding="utf-8") handler.setFormatter(MyFormatter()) logger.addHandler(handler)
Konfigurasikan berbilang pengendali log
Mengkonfigurasi berbilang pengendali log, seperti mengelog ke fail dan konsol pada masa yang sama, membolehkan pembangun mengurus output log secara fleksibel. Ini memudahkan fleksibiliti dalam penyahpepijatan dan menganalisis log dalam persekitaran yang berbeza.
Kod demo:
import logging # 配置文件日志处理程序 file_handler = logging.FileHandler("my_log.log", "w", encoding="utf-8") # 配置控制台日志处理程序 console_handler = logging.StreamHandler() # 添加处理程序到日志器 logger.addHandler(file_handler) logger.addHandler(console_handler)
Kesimpulan
Dengan menggunakan petua pengoptimuman ini, anda boleh meningkatkan prestasi modul python anda dengan ketara sambil memastikan aplikasi anda cekap. Mengoptimumkan modul Pengelogan boleh mengurangkan penggunaan sumber, meningkatkan kelajuan pemprosesan log, dan akhirnya meningkatkan prestasi keseluruhan aplikasi anda.
Atas ialah kandungan terperinci Pengoptimuman prestasi modul Pembalakan Python: meningkatkan kecekapan pembalakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!