Flask uygulamalarının yaklaşık %80'i hala üretim ortamlarında temel print() deyimleri veya yapılandırılmamış logging.info() çağrılarını kullanıyor. Modern izleme araçlarının yaygın olarak benimsenmesine rağmen, birçok Python web uygulaması günlüklerini düz metin olarak gönderiyor. Bu, hata ayıklamayı yavaşlatıyor, filtrelemeyi güvensiz hale getiriyor ve uyarıları kırılgan yapıyor.
Yapılandırılmış Günlüğe Kayıt
Yapılandırılmış günlüğe kaydetmek, her günlükte belirli bir yapıya sahip olmasını sağlar. Bu, günlüklerin daha anlaşılır olmasını ve daha kolay filtrelenmesini sağlar. Python'da logging modülü, yapılandırılmış günlüğe kaydetmek için kullanılır.
import logging
import json
import sys
class JsonFormatter(logging.Formatter):
def format(self, record):
log_entry = {
"timestamp": self.formatTime(record, self.datefmt),
"level": record.levelname,
"logger": record.name,
"module": record.module,
"function": record.funcName,
"line": record.lineno,
"message": record.getMessage(),
}
if record.exc_info:
log_entry["exception"] = self.formatException(record.exc_info)
return json.dumps(log_entry)Loguru
Loguru, yapılandırılmış günlüğe kaydetmek için daha basit ve daha ifade edici bir kurulum sunar. Loguru'nun temel soyutlaması, günlük olaylarının genel bir hedefi olan sink'tir. Sink'ler, akışlar, dosyalar veya ağ uç noktaları olabilir ve her biri kendi formatı, filtresi ve seri hale getirme mantığını sahip olabilir.
from loguru import logger
import sys
import json
#Varsayılan işleyiciyi kaldır
logger.remove()
#JSON sink ekleyin
logger.add(
sys.stdout,
format=lambda record: json.dumps({
"time": record["time"].isoformat(),
"level": record["level"].name,
"message": record["message"],
"module": record["module"],
"function": record["function"],
"line": record["line"],
**record["extra"]
}),
level="INFO"
)Gelecekte, yapılandırılmış günlüğe kaydetmenin Flask uygulamalarında daha yaygın olarak benimseneceğini umuyoruz. Bu, hata ayıklamayı hızlandıracağı ve günlüklerin daha anlaşılır olmasını sağlayacaktır.
Yapay zeka özeti
Flask uygulamalarında yapılandırılmış günlüğe kaydetmek, hata ayıklamayı hızlandırır ve günlüklerin daha anlaşılır olmasını sağlar.