संरचित लॉगिंग
मशीन-पठनीय आउटपुट के लिए JSON-फ़ॉर्मैट वाले लॉग जारी करें।
संरचित लॉगिंग, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
संरचित लॉगिंग क्या है?
संरचित लॉगिंग लॉग रिकॉर्ड को मुक्त-रूप टेक्स्ट के बजाय मशीन-पठनीय डेटा (JSON) के रूप में जारी करती है, जिससे उन्हें इंडेक्स करना, खोजना और उन पर अलर्ट लगाना आसान होता है।
import logging, json
def log_json(level, msg, **kw):
record = {"level": level, "msg": msg, **kw}
print(json.dumps(record))
log_json("INFO", "Request received", path="/api/users", method="GET")कस्टम JSON फ़ॉर्मैटर
सादे टेक्स्ट के बजाय JSON जारी करने के लिए logging.Formatter की सबक्लास बनाएँ।
import logging, json
class JSONFormatter(logging.Formatter):
def format(self, record):
return json.dumps({
"time": self.formatTime(record),
"level": record.levelname,
"name": record.name,
"msg": record.getMessage(),
})
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())
logging.getLogger().addHandler(handler)python-json-logger
python-json-logger पैकेज मानक और अतिरिक्त फ़ील्ड वाला तैयार JSON फ़ॉर्मैटर उपलब्ध कराता है।
# pip install python-json-logger
import logging
from pythonjsonlogger import jsonlogger
logger = logging.getLogger()
handler = logging.StreamHandler()
handler.setFormatter(jsonlogger.JsonFormatter())
logger.addHandler(handler)
logger.info("User created", extra={"user_id": 42})structlog
structlog एक लोकप्रिय तृतीय-पक्ष लाइब्रेरी है, जो संदर्भ संचित करने को फ़ॉर्मैटिंग से अलग करती है और प्रोसेसरों की श्रृंखलाओं का समर्थन करती है।
# pip install structlog
import structlog
log = structlog.get_logger()
log = log.bind(request_id="abc123")
log.info("payment_processed", amount=49.99, currency="USD")structlog से संदर्भ बाँधना
structlog आपको कुंजी-मान युग्मों को ऐसे लॉगर से बाँधने देता है, जो बाद की सभी कॉल में उन्हें साथ रखता है।
import structlog
log = structlog.get_logger().bind(
service="auth",
env="prod"
)
log.warning("login_failed", user="alice", reason="bad_password")
# {service:auth, env:prod, user:alice, reason:bad_password}टाइमस्टैम्प और कॉलर जानकारी जोड़ना
प्रोसेसर रिकॉर्ड को अपने-आप अतिरिक्त जानकारी से समृद्ध कर सकते हैं। प्रत्येक लॉग रिकॉर्ड में TimeStamper और CallsiteParameterAdder जोड़ें।
import structlog
structlog.configure(
processors=[
structlog.processors.TimeStamper(fmt="iso"),
structlog.processors.CallsiteParameterAdder([structlog.processors.CallsiteParameter.FILENAME]),
structlog.processors.JSONRenderer(),
]
)वेब ऐप्स में अनुरोध ID की लॉगिंग
वेब फ़्रेमवर्क में प्रत्येक अनुरोध की शुरुआत में अनुरोध ID बाँधें, ताकि उस अनुरोध के दौरान लॉग की हर पंक्ति में वह शामिल हो।
import structlog
def middleware(request, call_next):
req_id = request.headers.get("X-Request-Id", generate_id())
log = structlog.get_logger().bind(request_id=req_id)
log.info("request_started", path=request.url.path)
response = call_next(request)
log.info("request_finished", status=response.status_code)
return responseECS लॉग प्रारूप
Elastic Common Schema (ECS), Elastic Stack द्वारा उपयोग किया जाने वाला मानक JSON लॉग प्रारूप है। Python के लिए ecs-logging का उपयोग करें।
# pip install ecs-logging
import logging
import ecs_logging
logger = logging.getLogger("app")
handler = logging.StreamHandler()
handler.setFormatter(ecs_logging.StdlibFormatter())
logger.addHandler(handler)
logger.info("Event logged in ECS format")लॉग एकत्रीकरण प्रणालियाँ
संरचित JSON लॉग स्वाभाविक रूप से एकत्रीकरण टूल में पहुँचते हैं: Elasticsearch/Kibana (ELK), Grafana Loki, Datadog और AWS CloudWatch Logs Insights।
# Loki query example:
# {app="myservice"} | json | level="ERROR"
# CloudWatch Insights:
# fields @timestamp, level, msg
# | filter level = "ERROR"
# | sort @timestamp descलॉग में PII से बचना
लॉगिंग से पहले व्यक्तिगत पहचान योग्य जानकारी साफ़ करें। ईमेल, टोकन और पासवर्ड छिपाने के लिए कस्टम प्रोसेसर या फ़िल्टर का उपयोग करें।
import re
def mask_pii(_, __, event_dict):
msg = event_dict.get("event", "")
event_dict["event"] = re.sub(
r"[\w.+-]+@[\w-]+\.[\w.]+", "***@***.***", msg
)
return event_dictसंरचित और असंरचित लॉगिंग के बीच समझौते
संरचित लॉग खोजने और उन पर अलर्ट लगाने योग्य होते हैं, लेकिन वे विस्तृत भी होते हैं। पर्यावरण-आधारित कॉन्फ़िगरेशन का उपयोग करके प्रोडक्शन में संरचित लॉगिंग और डेवलपमेंट में मानव-पठनीय फ़ॉर्मैटिंग को मिलाएँ।
import structlog, os
if os.getenv("ENV") == "production":
renderer = structlog.processors.JSONRenderer()
else:
renderer = structlog.dev.ConsoleRenderer()
structlog.configure(processors=[renderer])त्वरित जाँच
सादे टेक्स्ट वाले लॉग की तुलना में JSON-संरचित लॉग का मुख्य लाभ क्या है?
पुनरावलोकन
संरचित लॉगिंग कुंजी-मान वाले JSON रिकॉर्ड जारी करती है। JSONFormatter, python-json-logger या structlog का उपयोग करें। किसी ऑपरेशन की शुरुआत में संदर्भ (अनुरोध ID, उपयोगकर्ता) बाँधें, ताकि उस ऑपरेशन के दौरान हर लॉग पंक्ति में वह संदर्भ शामिल रहे।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 76
- पाठ
- 320
अक्सर पूछे जाने वाले प्रश्न
क्या “संरचित लॉगिंग” पाठ निःशुल्क है?
हाँ—“संरचित लॉगिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“संरचित लॉगिंग” में मैं क्या सीखूँगा?
मशीन-पठनीय आउटपुट के लिए JSON-फ़ॉर्मैट वाले लॉग जारी करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“संरचित लॉगिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।