Gateway
लॉगिंग
OpenClaw में लॉग के दो मुख्य माध्यम हैं:
- फ़ाइल लॉग (JSON पंक्तियाँ), जिन्हें Gateway लिखता है।
- Gateway चलाने वाले टर्मिनल में कंसोल आउटपुट।
Control UI का लॉग टैब Gateway फ़ाइल लॉग को लगातार पढ़ता है। यह पृष्ठ बताता है कि लॉग कहाँ रहते हैं, उन्हें कैसे पढ़ें और लॉग स्तरों तथा प्रारूपों को कैसे कॉन्फ़िगर करें।
लॉग कहाँ रहते हैं
डिफ़ॉल्ट रूप से, Gateway प्रतिदिन एक रोलिंग लॉग फ़ाइल लिखता है। डिफ़ॉल्ट प्रोफ़ाइल ऐतिहासिक पथ बनाए रखती है:
/tmp/openclaw/openclaw-YYYY-MM-DD.log
नामित प्रोफ़ाइल उसी डायरेक्टरी में प्रोफ़ाइल-योग्य फ़ाइल नाम का उपयोग करती हैं:
/tmp/openclaw/openclaw-<profile>-YYYY-MM-DD.log
फ़ाइल नाम का प्रोफ़ाइल खंड लोअरकेस होता है और केवल अक्षरों, संख्याओं तथा
डैश तक सीमित होता है। सरल लोअरकेस नाम पठनीय बने रहते हैं, इसलिए --dev संक्षिप्त रूप
openclaw-dev-YYYY-MM-DD.log लिखता है। अक्षरों का केस, अंडरस्कोर और वास्तविक डैश एक
प्रतिवर्ती डैश एस्केप का उपयोग करते हैं, ताकि अलग-अलग प्रोफ़ाइल नाम कभी भी एक लॉग फ़ाइल साझा न करें।
पर्यावरण के माध्यम से सीधे सेट किए गए अत्यधिक बड़े मान फ़ाइल सिस्टम की फ़ाइल नाम सीमा
के भीतर रहने के लिए सीमित हैश प्रत्यय का उपयोग करते हैं। स्पष्ट logging.file इन
डिफ़ॉल्ट को ओवरराइड करता है।
दिनांक Gateway होस्ट के स्थानीय समय क्षेत्र का उपयोग करता है। जब /tmp/openclaw असुरक्षित
या अनुपलब्ध हो (और Windows पर हमेशा), OpenClaw इसके बजाय OS की अस्थायी डायरेक्टरी के अंतर्गत
उपयोगकर्ता-स्कोप वाली openclaw-<uid> डायरेक्टरी का उपयोग करता है। दिनांकित लॉग फ़ाइलें
24 घंटे बाद हटा दी जाती हैं।
जब अगला लेखन logging.maxFileBytes से अधिक हो जाता, तो प्रत्येक फ़ाइल रोटेट होती है
(डिफ़ॉल्ट: 100 MB)। OpenClaw सक्रिय फ़ाइल के पास अधिकतम पाँच क्रमांकित अभिलेख रखता है,
जैसे openclaw-YYYY-MM-DD.1.log या
openclaw-dev-YYYY-MM-DD.1.log, और निदान को दबाने के बजाय नई सक्रिय लॉग फ़ाइल में
लिखना जारी रखता है।
आप ~/.openclaw/openclaw.json में पथ को ओवरराइड कर सकते हैं:
{ "logging": { "file": "/path/to/openclaw.log" }}लॉग कैसे पढ़ें
CLI: लाइव टेल (अनुशंसित)
RPC के माध्यम से Gateway लॉग फ़ाइल को टेल करें:
openclaw logs --followopenclaw --dev logs --followopenclaw --profile work logs --followरूट प्रोफ़ाइल चयनकर्ता वही प्रोफ़ाइल-विशिष्ट फ़ाइल निर्धारित करता है जिसका उपयोग Gateway करता है, जिसमें स्थानीय RPC अनुपलब्ध होने पर CLI फ़ॉलबैक पठन भी शामिल है।
विकल्प:
| फ़्लैग | डिफ़ॉल्ट | व्यवहार |
|---|---|---|
--follow |
बंद | टेल करना जारी रखें; डिस्कनेक्ट होने पर बैकऑफ़ के साथ पुनः कनेक्ट करता है |
--limit <n> |
200 |
प्रत्येक फ़ेच में पंक्तियों की अधिकतम संख्या |
--max-bytes <n> |
250000 |
प्रत्येक फ़ेच में पढ़े जाने वाले अधिकतम बाइट |
--interval <ms> |
1000 |
अनुसरण करते समय पोल अंतराल |
--json |
बंद | पंक्ति-सीमांकित JSON (प्रति पंक्ति एक इवेंट) |
--plain |
बंद | TTY सत्रों में सादा टेक्स्ट बाध्य करें |
--no-color |
— | ANSI रंग अक्षम करें |
--utc |
बंद | टाइमस्टैम्प UTC में रेंडर करें (डिफ़ॉल्ट स्थानीय समय है) |
--local-time |
बंद | स्थानीय-समय डिफ़ॉल्ट के लिए स्वीकृत संगतता वर्तनी; इसके अतिरिक्त कोई प्रभाव नहीं |
--url / --token |
— | मानक Gateway RPC फ़्लैग |
--timeout <ms> |
30000 |
Gateway RPC टाइमआउट |
--expect-final |
बंद | एजेंट-समर्थित RPC अंतिम-प्रतिक्रिया प्रतीक्षा फ़्लैग (साझा क्लाइंट परत के माध्यम से यहाँ स्वीकार किया जाता है) |
आउटपुट मोड:
- TTY सत्र: सुव्यवस्थित, रंगीन, संरचित लॉग पंक्तियाँ।
- गैर-TTY सत्र: सादा टेक्स्ट।
जब आप स्पष्ट --url देते हैं, तो CLI कॉन्फ़िगरेशन या
पर्यावरण क्रेडेंशियल स्वतः लागू नहीं करता; --token स्वयं शामिल करें, अन्यथा कॉल
gateway url override requires explicit credentials के साथ विफल हो जाती है।
JSON मोड में, CLI type-टैग वाली ऑब्जेक्ट उत्सर्जित करता है:
meta: स्ट्रीम मेटाडेटा (फ़ाइल, स्रोत, स्रोत प्रकार, सेवा, कर्सर, आकार)log: पार्स की गई लॉग प्रविष्टिnotice: ट्रंकेशन / रोटेशन संकेतraw: पार्स न की गई लॉग पंक्तिerror: Gateway कनेक्शन विफलताएँ (stderr में लिखी जाती हैं)
यदि अप्रत्यक्ष स्थानीय लूपबैक Gateway पेयरिंग माँगता है, कनेक्ट करते समय बंद हो जाता है,
या logs.tail के उत्तर देने से पहले टाइमआउट हो जाता है, तो openclaw logs स्वतः
कॉन्फ़िगर की गई Gateway फ़ाइल लॉग पर फ़ॉलबैक करता है। स्पष्ट --url लक्ष्य इस
फ़ॉलबैक का उपयोग नहीं करते। openclaw logs --follow अधिक सख्त है: Linux पर उपलब्ध होने पर यह PID के आधार पर
सक्रिय उपयोगकर्ता-systemd Gateway जर्नल का उपयोग करता है, अन्यथा संभावित रूप से पुरानी साथ-साथ स्थित
फ़ाइल का अनुसरण करने के बजाय बैकऑफ़ के साथ लाइव Gateway का पुनः प्रयास करता है।
यदि Gateway तक नहीं पहुँचा जा सकता, तो CLI इसे चलाने का संक्षिप्त संकेत प्रिंट करता है:
openclaw doctorControl UI (वेब)
Control UI का लॉग टैब logs.tail का उपयोग करके उसी फ़ाइल को टेल करता है।
इसे खोलने का तरीका जानने के लिए Control UI देखें।
केवल चैनल के लॉग
चैनल गतिविधि (WhatsApp/Telegram/आदि) फ़िल्टर करने के लिए उपयोग करें:
openclaw channels logs --channel whatsapp--channel का डिफ़ॉल्ट all है; --lines <n> (डिफ़ॉल्ट 200) और --json भी
उपलब्ध हैं।
लॉग प्रारूप
फ़ाइल लॉग (JSONL)
लॉग फ़ाइल की प्रत्येक पंक्ति एक JSON ऑब्जेक्ट है। CLI और Control UI संरचित आउटपुट (समय, स्तर, उपतंत्र, संदेश) रेंडर करने के लिए इन प्रविष्टियों को पार्स करते हैं।
फ़ाइल-लॉग JSONL रिकॉर्ड में उपलब्ध होने पर मशीन द्वारा फ़िल्टर किए जा सकने वाले शीर्ष-स्तरीय फ़ील्ड भी शामिल होते हैं:
hostname: Gateway होस्ट नाम।message: पूर्ण-टेक्स्ट खोज के लिए समतल किया गया लॉग संदेश टेक्स्ट।agent_id: लॉग कॉल में एजेंट संदर्भ होने पर सक्रिय एजेंट आईडी।session_id: लॉग कॉल में सत्र संदर्भ होने पर सक्रिय सत्र आईडी/कुंजी।channel: लॉग कॉल में चैनल संदर्भ होने पर सक्रिय चैनल।
OpenClaw इन फ़ील्ड के साथ मूल संरचित लॉग तर्कों को सुरक्षित रखता है, ताकि क्रमांकित tslog तर्क कुंजियाँ पढ़ने वाले मौजूदा पार्सर काम करते रहें।
Talk, रीयलटाइम वॉइस और प्रबंधित-रूम गतिविधि इसी फ़ाइल-लॉग पाइपलाइन के माध्यम से सीमित जीवनचक्र लॉग रिकॉर्ड उत्सर्जित करती है। उपलब्ध होने पर इन रिकॉर्ड में इवेंट प्रकार, मोड, ट्रांसपोर्ट, प्रदाता और आकार/समय माप शामिल होते हैं, लेकिन ट्रांसक्रिप्ट टेक्स्ट, ऑडियो पेलोड, टर्न आईडी, कॉल आईडी और प्रदाता आइटम आईडी शामिल नहीं होते।
कंसोल आउटपुट
कंसोल लॉग TTY-जागरूक होते हैं और पठनीयता के लिए प्रारूपित किए जाते हैं:
- उपतंत्र उपसर्ग (उदा.
gateway/channels/whatsapp) - स्तर के अनुसार रंग (जानकारी/चेतावनी/त्रुटि)
- वैकल्पिक संक्षिप्त या JSON मोड
कंसोल प्रारूपण logging.consoleStyle द्वारा नियंत्रित होता है।
Gateway WebSocket लॉग
openclaw gateway में RPC ट्रैफ़िक के लिए WebSocket प्रोटोकॉल लॉगिंग भी है:
- सामान्य मोड: केवल उल्लेखनीय परिणाम (त्रुटियाँ, पार्स त्रुटियाँ, धीमी कॉल)
--verbose: समस्त अनुरोध/प्रतिक्रिया ट्रैफ़िक--ws-log auto|compact|full: विस्तृत रेंडरिंग शैली चुनें--compact:--ws-log compactका उपनाम
उदाहरण:
openclaw gatewayopenclaw gateway --verbose --ws-log compactopenclaw gateway --verbose --ws-log fullलॉगिंग कॉन्फ़िगर करना
सभी लॉगिंग कॉन्फ़िगरेशन ~/.openclaw/openclaw.json में logging के अंतर्गत होते हैं।
{ "logging": { "level": "info", "file": "/path/to/openclaw.log", "consoleLevel": "info", "consoleStyle": "pretty", "redactSensitive": "tools", "redactPatterns": ["sk-.*"] }}लॉग स्तर
स्तर: silent, fatal, error, warn, info, debug, trace।
logging.level: फ़ाइल लॉग (JSONL) स्तर (डिफ़ॉल्ट:info)।logging.consoleLevel: कंसोल विवरण स्तर।
आप OPENCLAW_LOG_LEVEL पर्यावरण चर (उदा. OPENCLAW_LOG_LEVEL=debug) के माध्यम से दोनों को ओवरराइड कर सकते हैं। पर्यावरण चर कॉन्फ़िगरेशन फ़ाइल पर प्राथमिकता लेता है, इसलिए आप openclaw.json को संपादित किए बिना एक बार चलाने के लिए विवरण स्तर बढ़ा सकते हैं। आप वैश्विक CLI विकल्प --log-level <level> भी दे सकते हैं (उदाहरण के लिए, openclaw --log-level debug gateway run), जो उस कमांड के लिए पर्यावरण चर को ओवरराइड करता है।
--verbose केवल कंसोल आउटपुट और WS लॉग विवरण स्तर को प्रभावित करता है; यह
फ़ाइल लॉग स्तरों को नहीं बदलता।
लक्षित मॉडल ट्रांसपोर्ट निदान
प्रदाता कॉल डीबग करते समय सभी लॉग को debug तक बढ़ाने के बजाय लक्षित
पर्यावरण फ़्लैग का उपयोग करें:
OPENCLAW_DEBUG_MODEL_TRANSPORT=1 openclaw gatewayOPENCLAW_DEBUG_MODEL_PAYLOAD=tools OPENCLAW_DEBUG_SSE=events openclaw gatewayउपलब्ध फ़्लैग:
OPENCLAW_DEBUG_MODEL_TRANSPORT=1: अनुरोध प्रारंभ, फ़ेच प्रतिक्रिया, SDK हेडर, पहला स्ट्रीमिंग इवेंट, स्ट्रीम पूर्णता और ट्रांसपोर्ट त्रुटियाँinfoस्तर पर उत्सर्जित करें।OPENCLAW_DEBUG_MODEL_PAYLOAD=summary: मॉडल अनुरोध लॉग में अनुरोध पेलोड का सीमित सारांश शामिल करें।OPENCLAW_DEBUG_MODEL_PAYLOAD=tools: पेलोड सारांश में मॉडल के समक्ष प्रस्तुत सभी टूल नाम शामिल करें।OPENCLAW_DEBUG_MODEL_PAYLOAD=full-redacted: संशोधित और सीमित JSON पेलोड स्नैपशॉट शामिल करें। केवल डीबग करते समय उपयोग करें; सीक्रेट संशोधित किए जाते हैं, लेकिन प्रॉम्प्ट और संदेश टेक्स्ट फिर भी मौजूद हो सकते हैं।OPENCLAW_DEBUG_SSE=events: पहले इवेंट और स्ट्रीम पूर्णता का समय उत्सर्जित करें।OPENCLAW_DEBUG_SSE=peek: पहले पाँच संशोधित SSE इवेंट पेलोड भी उत्सर्जित करें, जिन्हें प्रत्येक इवेंट के अनुसार सीमित किया गया हो।OPENCLAW_DEBUG_CODE_MODE=1: कोड-मोड मॉडल-सतह निदान उत्सर्जित करें, जिसमें वह स्थिति शामिल है जब नेटिव प्रदाता टूल छिपे होते हैं क्योंकि कोड मोड टूल सतह का स्वामी होता है।
ये फ़्लैग सामान्य OpenClaw लॉगिंग के माध्यम से लॉग करते हैं, इसलिए openclaw logs --follow
और Control UI का लॉग टैब उन्हें दिखाते हैं। फ़्लैग के बिना भी यही निदान
debug स्तर पर उपलब्ध रहते हैं।
[model-fetch] प्रारंभ और प्रतिक्रिया मेटाडेटा (प्रदाता, API, मॉडल, स्थिति,
विलंबता और अनुरोध फ़ील्ड जैसे विधि, URL, टाइमआउट, प्रॉक्सी और नीति)
OPENCLAW_DEBUG_MODEL_TRANSPORT पर ध्यान दिए बिना हमेशा info स्तर पर
उत्सर्जित होता है, ताकि डीबग फ़्लैग के बिना भी मूलभूत मॉडल ट्रांसपोर्ट स्वच्छता दिखाई दे।
ट्रेस सहसंबंध
फ़ाइल लॉग JSONL होते हैं। जब किसी लॉग कॉल में मान्य निदान ट्रेस संदर्भ होता है,
तो OpenClaw ट्रेस फ़ील्ड को शीर्ष-स्तरीय JSON कुंजियों (traceId, spanId,
parentSpanId, traceFlags) के रूप में लिखता है, ताकि बाहरी लॉग प्रोसेसर पंक्ति को
OTEL स्पैन और प्रदाता traceparent प्रसार से सहसंबद्ध कर सकें।
Gateway HTTP अनुरोध और Gateway WebSocket फ़्रेम एक आंतरिक अनुरोध
ट्रेस स्कोप स्थापित करते हैं। उस एसिंक स्कोप के भीतर उत्सर्जित लॉग और निदान इवेंट
स्पष्ट ट्रेस संदर्भ न दिए जाने पर अनुरोध ट्रेस को इनहेरिट करते हैं। एजेंट रन और
मॉडल-कॉल ट्रेस सक्रिय अनुरोध ट्रेस के चाइल्ड बनते हैं, ताकि स्थानीय लॉग,
निदान स्नैपशॉट, OTEL स्पैन और विश्वसनीय प्रदाता traceparent हेडर को
कच्चा अनुरोध या मॉडल सामग्री लॉग किए बिना traceId द्वारा जोड़ा जा सके।
OpenTelemetry लॉग निर्यात सक्षम होने पर Talk जीवनचक्र लॉग रिकॉर्ड भी
diagnostics-otel लॉग निर्यात में प्रवाहित होते हैं और फ़ाइल लॉग वाले ही सीमित गुणों का उपयोग करते हैं।
OTLP, stdout JSONL या दोनों सिंक चुनने के लिए diagnostics.otel.logsExporter कॉन्फ़िगर करें।
मॉडल कॉल का आकार और समय
मॉडल-कॉल निदान कच्चे प्रॉम्प्ट या प्रतिक्रिया सामग्री को कैप्चर किए बिना सीमित अनुरोध/प्रतिक्रिया माप रिकॉर्ड करते हैं:
requestPayloadBytes: अंतिम मॉडल अनुरोध पेलोड का UTF-8 बाइट आकारresponseStreamBytes: स्ट्रीम किए गए मॉडल प्रतिक्रिया खंड के पेलोड का UTF-8 बाइट आकार। उच्च-आवृत्ति वाले टेक्स्ट, चिंतन और टूल-कॉल डेल्टा इवेंट में पूर्णpartialस्नैपशॉट के बजाय केवल वृद्धिशीलdeltaबाइट की गणना होती है।timeToFirstByteMs: पहले स्ट्रीम किए गए प्रतिक्रिया इवेंट से पहले बीता समयdurationMs: मॉडल कॉल की कुल अवधि
डायग्नोस्टिक्स निर्यात सक्षम होने पर ये फ़ील्ड डायग्नोस्टिक स्नैपशॉट, मॉडल-कॉल Plugin हुक और OTEL मॉडल-कॉल स्पैन/मेट्रिक्स के लिए उपलब्ध होते हैं।
कंसोल शैलियाँ
logging.consoleStyle:
pretty: उपयोगकर्ता-अनुकूल, रंगीन और टाइमस्टैम्प सहित।compact: अधिक संक्षिप्त आउटपुट (लंबे सत्रों के लिए सर्वोत्तम)।json: प्रति पंक्ति JSON (लॉग प्रोसेसर के लिए)।
संपादन
OpenClaw संवेदनशील टोकन को कंसोल आउटपुट, फ़ाइल लॉग, OTLP लॉग रिकॉर्ड, सहेजे गए सत्र ट्रांसक्रिप्ट टेक्स्ट या Control UI टूल इवेंट पेलोड (टूल प्रारंभ आर्ग्युमेंट, आंशिक/अंतिम परिणाम पेलोड, व्युत्पन्न निष्पादन आउटपुट और पैच सारांश) तक पहुँचने से पहले संपादित कर सकता है:
- संवेदनशील मानों का संपादन हमेशा सक्षम रहता है।
logging.redactPatterns: रेगेक्स स्ट्रिंग की सूची, जो लॉग/ट्रांसक्रिप्ट आउटपुट के लिए डिफ़ॉल्ट सेट को बदलती है। Control UI टूल पेलोड के लिए, कस्टम पैटर्न अंतर्निहित डिफ़ॉल्ट के अतिरिक्त लागू होते हैं, इसलिए कोई पैटर्न जोड़ने से उन मानों का संपादन कभी कमजोर नहीं होता जिन्हें डिफ़ॉल्ट पहले से पकड़ते हैं।
फ़ाइल लॉग और सत्र ट्रांसक्रिप्ट JSONL में ही रहते हैं, लेकिन मेल खाने वाले गुप्त मानों को पंक्ति या संदेश डिस्क पर लिखे जाने से पहले छिपा दिया जाता है। संपादन सर्वोत्तम प्रयास के आधार पर होता है: यह टेक्स्ट-युक्त संदेश सामग्री और लॉग स्ट्रिंग पर लागू होता है, प्रत्येक पहचानकर्ता या बाइनरी पेलोड फ़ील्ड पर नहीं।
अंतर्निहित डिफ़ॉल्ट सामान्य API क्रेडेंशियल और भुगतान-क्रेडेंशियल फ़ील्ड नामों को कवर करते हैं, जैसे कार्ड नंबर, CVC/CVV, साझा भुगतान टोकन और भुगतान क्रेडेंशियल, जब वे JSON फ़ील्ड, URL पैरामीटर, CLI फ़्लैग या असाइनमेंट के रूप में दिखाई देते हैं।
OpenClaw UI क्लाइंट, सहायता
बंडल, डायग्नोस्टिक्स प्रेक्षक, अनुमोदन प्रॉम्प्ट या एजेंट टूल को दिखाए जाने वाले सुरक्षा-सीमा पेलोड भी संपादित करता है। कस्टम
logging.redactPatterns उन सतहों पर परियोजना-विशिष्ट पैटर्न जोड़ सकता है।
डायग्नोस्टिक्स और OpenTelemetry
डायग्नोस्टिक्स मॉडल रन और
संदेश-प्रवाह टेलीमेट्री (Webhook, कतारबद्ध करना, सत्र स्थिति) के लिए संरचित, मशीन-पठनीय इवेंट हैं। वे लॉग को प्रतिस्थापित नहीं
करते—वे मेट्रिक्स, ट्रेस और निर्यातकों को डेटा प्रदान करते हैं। इवेंट डिफ़ॉल्ट रूप से
प्रक्रिया के भीतर उत्सर्जित होते हैं (उन्हें बंद करने के लिए diagnostics.enabled: false सेट करें);
उनका निर्यात अलग से किया जाता है।
दो निकटवर्ती सतहें:
- OpenTelemetry निर्यात — मेट्रिक्स, ट्रेस और लॉग को OTLP/HTTP के माध्यम से किसी भी OpenTelemetry-संगत कलेक्टर या बैकएंड (Datadog, Grafana, Honeycomb, New Relic, Tempo आदि) को भेजें। पूर्ण कॉन्फ़िगरेशन, सिग्नल कैटलॉग, मेट्रिक/स्पैन नाम, एनवायरनमेंट वेरिएबल और गोपनीयता मॉडल एक समर्पित पृष्ठ पर उपलब्ध हैं: OpenTelemetry निर्यात।
- डायग्नोस्टिक्स फ़्लैग — लक्षित डीबग-लॉग फ़्लैग, जो
logging.levelको बढ़ाए बिना अतिरिक्त लॉग कोlogging.fileपर भेजते हैं। फ़्लैग केस-असंवेदी होते हैं और वाइल्डकार्ड (telegram.*,*) का समर्थन करते हैं।diagnostics.flagsके अंतर्गत याOPENCLAW_DIAGNOSTICS=...एनवायरनमेंट ओवरराइड के माध्यम से कॉन्फ़िगर करें। पूर्ण मार्गदर्शिका: डायग्नोस्टिक्स फ़्लैग।
कलेक्टर में OTLP निर्यात के लिए, OpenTelemetry निर्यात देखें।
समस्या निवारण सुझाव
- Gateway तक नहीं पहुँचा जा सकता? पहले
openclaw doctorचलाएँ। - लॉग खाली हैं? जाँचें कि Gateway चल रहा है और
logging.fileमें दिए गए फ़ाइल पथ पर लिख रहा है। - अधिक विवरण चाहिए?
logging.levelकोdebugयाtraceपर सेट करें और पुनः प्रयास करें।
संबंधित
- OpenTelemetry निर्यात — OTLP/HTTP निर्यात, मेट्रिक/स्पैन कैटलॉग, गोपनीयता मॉडल
- डायग्नोस्टिक्स फ़्लैग — लक्षित डीबग-लॉग फ़्लैग
- Gateway लॉगिंग की आंतरिक कार्यप्रणाली — WS लॉग शैलियाँ, उप-प्रणाली उपसर्ग और कंसोल कैप्चर
- कॉन्फ़िगरेशन संदर्भ — पूर्ण
diagnostics.*फ़ील्ड संदर्भ