Diagnostics
डायग्नोस्टिक्स फ़्लैग्स
डायग्नोस्टिक्स फ़्लैग वैश्विक रूप से
logging.level बढ़ाए बिना किसी एक सबसिस्टम के लिए अतिरिक्त लॉगिंग चालू करते हैं। जब तक कोई सबसिस्टम किसी फ़्लैग की जाँच नहीं करता, उसका कोई प्रभाव नहीं पड़ता।
यह कैसे काम करता है
- फ़्लैग केस-असंवेदी स्ट्रिंग होते हैं, जिन्हें कॉन्फ़िगरेशन में
diagnostics.flagsऔरOPENCLAW_DIAGNOSTICSएनवायरनमेंट ओवरराइड से निर्धारित करके, डुप्लिकेट हटाकर और लोअरकेस में बदला जाता है। name.*स्वयंnameऔरname.के अंतर्गत आने वाली हर चीज़ से मेल खाता है (उदाहरण के लिए,telegram.*,telegram.httpसे मेल खाता है)।*याallप्रत्येक फ़्लैग को सक्षम करता है।- कॉन्फ़िगरेशन में
diagnostics.flagsबदलने के बाद Gateway को पुनः आरंभ करें; यह हॉट-रीलोड नहीं होता।
ज्ञात फ़्लैग
| फ़्लैग | सक्षम करता है |
|---|---|
telegram.http |
Telegram Bot API HTTP त्रुटि लॉगिंग |
brave.http |
Brave Search अनुरोध/प्रतिक्रिया/कैश लॉगिंग |
profiler |
उत्तर-चरण प्रोफ़ाइलर और Codex ऐप-सर्वर प्रोफ़ाइलर (दोनों) |
reply.profiler |
केवल उत्तर-चरण प्रोफ़ाइलर |
codex.profiler |
केवल Codex ऐप-सर्वर प्रोफ़ाइलर |
health |
Gateway हेल्थ प्रोब/खाता/बाइंडिंग डीबग विवरण |
ingress.timing |
सत्र लोड, मॉडल चयन और मॉडल कैटलॉग की समयावधियाँ |
plugin.load-profile |
सिंक्रोनस Plugin मॉड्यूल-लोड की समयावधियाँ |
timeline |
संरचित JSONL टाइमलाइन आर्टिफ़ैक्ट (नीचे देखें) |
कॉन्फ़िगरेशन द्वारा सक्षम करें
{ "diagnostics": { "flags": ["telegram.http"] }}एकाधिक फ़्लैग:
{ "diagnostics": { "flags": ["telegram.http", "brave.http", "gateway.*"] }}एनवायरनमेंट ओवरराइड (एक बार के लिए)
OPENCLAW_DIAGNOSTICS=telegram.http,brave.httpमान अल्पविराम या रिक्त स्थान पर विभाजित होते हैं। विशेष मान:
| मान | प्रभाव |
|---|---|
0, false, off, none |
कॉन्फ़िगरेशन को भी ओवरराइड करते हुए सभी फ़्लैग अक्षम करें |
1, true, all, * |
प्रत्येक फ़्लैग सक्षम करें |
OPENCLAW_DIAGNOSTICS=0 उस प्रोसेस के लिए एनवायरनमेंट और कॉन्फ़िगरेशन, दोनों के फ़्लैग अक्षम करता है। यह फ़ाइल को संपादित किए बिना, कॉन्फ़िगरेशन में चालू छोड़े गए प्रोफ़ाइलर फ़्लैग को अस्थायी रूप से शांत करने के लिए उपयोगी है।
प्रोफ़ाइलर फ़्लैग
प्रोफ़ाइलर फ़्लैग हल्के टाइमिंग स्पैन को नियंत्रित करते हैं; बंद होने पर वे कोई अतिरिक्त ओवरहेड नहीं जोड़ते।
Gateway के एक रन के लिए सभी प्रोफ़ाइलर-नियंत्रित स्पैन सक्षम करें:
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway runकेवल उत्तर-डिस्पैच प्रोफ़ाइलर स्पैन सक्षम करें:
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway runकेवल Codex ऐप-सर्वर स्टार्टअप/टूल/थ्रेड प्रोफ़ाइलर स्पैन सक्षम करें:
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway runprofiler उत्तर प्रोफ़ाइलर और Codex प्रोफ़ाइलर, दोनों को सक्षम करता है; केवल किसी एक को सक्षम करने के लिए
उसके दायरे-विशिष्ट फ़्लैग नाम का उपयोग करें।
या इसे कॉन्फ़िगरेशन में सेट करें:
{ "diagnostics": { "flags": ["reply.profiler", "codex.profiler"] }}कॉन्फ़िगरेशन फ़्लैग बदलने के बाद Gateway को पुनः आरंभ करें। किसी प्रोफ़ाइलर फ़्लैग को अक्षम करने के लिए,
उसे diagnostics.flags से हटाकर पुनः आरंभ करें, या उस रन के लिए प्रत्येक डायग्नोस्टिक्स फ़्लैग को ओवरराइड करने हेतु प्रोसेस को
OPENCLAW_DIAGNOSTICS=0 के साथ शुरू करें।
टाइमलाइन आर्टिफ़ैक्ट
timeline फ़्लैग (उपनाम: diagnostics.timeline) बाहरी QA हार्नेस के लिए संरचित स्टार्टअप
और रनटाइम टाइमिंग इवेंट को JSONL के रूप में लिखता है:
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway runया इसे कॉन्फ़िगरेशन में सक्षम करें:
{ "diagnostics": { "flags": ["timeline"] }}आउटपुट पथ हमेशा OPENCLAW_DIAGNOSTICS_TIMELINE_PATH से आता है, भले ही
फ़्लैग स्वयं कॉन्फ़िगरेशन में सेट हो; पथ के लिए कोई कॉन्फ़िगरेशन कुंजी नहीं है।
जब timeline केवल कॉन्फ़िगरेशन से सक्षम होता है, तो शुरुआती कॉन्फ़िगरेशन-लोडिंग स्पैन
उपलब्ध नहीं होते, क्योंकि OpenClaw ने तब तक कॉन्फ़िगरेशन नहीं पढ़ा होता; बाद के स्टार्टअप स्पैन
सामान्य रूप से कैप्चर किए जाते हैं।
OPENCLAW_DIAGNOSTICS=1, =all, और =* भी टाइमलाइन सक्षम करते हैं, क्योंकि वे
प्रत्येक फ़्लैग सक्षम करते हैं। जब आपको केवल JSONL आर्टिफ़ैक्ट चाहिए और अन्य सभी डायग्नोस्टिक्स फ़्लैग नहीं चाहिए, तो दायरे-विशिष्ट timeline फ़्लैग को प्राथमिकता दें।
टाइमलाइन में इवेंट-लूप विलंब नमूनों के लिए
timeline से परे एक और ऑप्ट-इन आवश्यक है: टाइमलाइन सक्षम करने के साथ
OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 (या on/true/yes) सेट करें।
टाइमलाइन रिकॉर्ड openclaw.diagnostics.v1 एनवेलप का उपयोग करते हैं और उनमें
प्रोसेस आईडी, चरण नाम, स्पैन नाम, अवधियाँ, Plugin आईडी, निर्भरता
संख्याएँ, इवेंट-लूप विलंब नमूने, प्रोवाइडर ऑपरेशन नाम, चाइल्ड-प्रोसेस निकास
स्थिति और स्टार्टअप त्रुटि के नाम/संदेश शामिल हो सकते हैं। टाइमलाइन फ़ाइलों को स्थानीय
डायग्नोस्टिक्स आर्टिफ़ैक्ट मानें; उन्हें अपनी मशीन के बाहर साझा करने से पहले उनकी समीक्षा करें।
लॉग कहाँ जाते हैं
फ़्लैग मानक डायग्नोस्टिक्स लॉग फ़ाइल में लॉग उत्सर्जित करते हैं। डिफ़ॉल्ट रूप से:
/tmp/openclaw/openclaw-YYYY-MM-DD.logनामित प्रोफ़ाइल /tmp/openclaw/openclaw-<profile>-YYYY-MM-DD.log का उपयोग करते हैं; उदाहरण के लिए,
--dev, openclaw-dev-YYYY-MM-DD.log का उपयोग करता है।
यदि आप logging.file सेट करते हैं, तो इसके बजाय उस पथ का उपयोग करें। लॉग JSONL होते हैं (प्रति पंक्ति एक JSON
ऑब्जेक्ट)। logging.redactSensitive के आधार पर संपादन फिर भी लागू होता है।
लॉग-पथ निर्धारण, रोटेशन और संपादन मॉडल की पूरी जानकारी के लिए लॉगिंग देखें।
लॉग निकालें
सक्रिय प्रोफ़ाइल की नवीनतम लॉग फ़ाइल पढ़ें:
openclaw logs --plain# नामित प्रोफ़ाइल का उदाहरण:openclaw --profile work logs --plainTelegram HTTP डायग्नोस्टिक्स के लिए फ़िल्टर करें:
openclaw logs --plain --limit 5000 | rg "telegram http error"Brave Search HTTP डायग्नोस्टिक्स के लिए फ़िल्टर करें:
openclaw logs --plain --limit 5000 | rg "brave http"या समस्या को दोहराते समय टेल करें:
openclaw logs --follow --plain | rg "telegram http error"दूरस्थ Gateway के लिए इसके बजाय openclaw logs --follow का उपयोग करें (देखें
/cli/logs)।
टिप्पणियाँ
- यदि
logging.levelकोwarnसे अधिक सेट किया गया है, तो फ़्लैग-नियंत्रित लॉग दबाए जा सकते हैं। डिफ़ॉल्टinfoउपयुक्त है। brave.httpBrave Search अनुरोध URL/क्वेरी पैरामीटर, प्रतिक्रिया स्थिति/समयावधि और कैश हिट/मिस/लेखन इवेंट लॉग करता है। यह API कुंजी (जो अनुरोध हेडर के रूप में भेजी जाती है) या प्रतिक्रिया बॉडी लॉग नहीं करता, लेकिन खोज क्वेरी संवेदनशील हो सकती हैं।- फ़्लैग को सक्षम छोड़ना सुरक्षित है; वे केवल विशिष्ट सबसिस्टम के लॉग की मात्रा को प्रभावित करते हैं।
- लॉग गंतव्य, स्तर और संपादन बदलने के लिए /logging का उपयोग करें।