Python Academy · पाठ

संरचित लॉगिंग

मशीन-पठनीय आउटपुट के लिए JSON-फ़ॉर्मैट वाले लॉग जारी करें।

पाठ 3, कुल 4 में से13 चरण

संरचित लॉगिंग, 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 response

ECS लॉग प्रारूप

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 पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. logging मॉड्यूल की मूल बातें
  2. हैंडलर, फ़ॉर्मैटर और फ़िल्टर
  3. संरचित लॉगिंग
  4. pdb से डीबगिंग
← Python Academy पर वापस जाएँ