OpenClaw มีพื้นผิวบันทึกหลักสองแบบ:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- บันทึกไฟล์ (JSON lines) ที่ Gateway เขียน
- เอาต์พุตคอนโซล ที่แสดงในเทอร์มินัลและ Gateway Debug UI
ตำแหน่งที่เก็บบันทึก
ตามค่าเริ่มต้น Gateway จะเขียนไฟล์บันทึกแบบหมุนเวียนไว้ใต้:/tmp/openclaw/openclaw-YYYY-MM-DD.log
วันที่ใช้เขตเวลาท้องถิ่นของโฮสต์ Gateway
แต่ละไฟล์จะหมุนเวียนเมื่อมีขนาดถึง logging.maxFileBytes (ค่าเริ่มต้น: 100 MB)
OpenClaw จะเก็บไฟล์เก็บถาวรที่มีหมายเลขไว้สูงสุดห้าไฟล์ข้างไฟล์ที่ใช้งานอยู่ เช่น
openclaw-YYYY-MM-DD.1.log และเขียนต่อไปยังไฟล์บันทึกที่ใช้งานอยู่ใหม่แทนการ
ระงับข้อมูลวินิจฉัย
คุณสามารถแทนที่ค่านี้ได้ใน ~/.openclaw/openclaw.json:
วิธีอ่านบันทึก
CLI: ติดตามแบบสด (แนะนำ)
ใช้ CLI เพื่อติดตามไฟล์บันทึกของ Gateway ผ่าน RPC:--local-time: แสดงเวลาประทับในเขตเวลาท้องถิ่นของคุณ--url <url>/--token <token>/--timeout <ms>: แฟล็ก RPC มาตรฐานของ Gateway--expect-final: แฟล็กรอคำตอบสุดท้ายของ RPC ที่รองรับด้วยเอเจนต์ (ยอมรับที่นี่ผ่านเลเยอร์ไคลเอนต์ที่ใช้ร่วมกัน)
- เซสชัน TTY: บรรทัดบันทึกที่สวยงาม มีสี และมีโครงสร้าง
- เซสชันที่ไม่ใช่ TTY: ข้อความธรรมดา
--json: JSON แบบคั่นด้วยบรรทัด (หนึ่งเหตุการณ์บันทึกต่อหนึ่งบรรทัด)--plain: บังคับใช้ข้อความธรรมดาในเซสชัน TTY--no-color: ปิดใช้งานสี ANSI
--url อย่างชัดเจน CLI จะไม่ปรับใช้ข้อมูลประจำตัวจากการกำหนดค่า
หรือสภาพแวดล้อมโดยอัตโนมัติ ให้ใส่ --token เองหาก Gateway เป้าหมาย
ต้องใช้การตรวจสอบสิทธิ์
ในโหมด JSON CLI จะส่งออกออบเจ็กต์ที่ติดแท็ก type:
meta: เมตาดาต้าของสตรีม (ไฟล์ เคอร์เซอร์ ขนาด)log: รายการบันทึกที่แยกวิเคราะห์แล้วnotice: คำใบ้เกี่ยวกับการตัดทอน / การหมุนเวียนraw: บรรทัดบันทึกที่ไม่ได้แยกวิเคราะห์
logs.tail จะตอบ openclaw logs จะย้อนกลับไปใช้
ไฟล์บันทึก Gateway ที่กำหนดค่าไว้โดยอัตโนมัติ เป้าหมาย --url ที่ระบุอย่างชัดเจนจะไม่ใช้
กลไกย้อนกลับนี้
หากเข้าถึง Gateway ไม่ได้ CLI จะแสดงคำใบ้สั้น ๆ ให้เรียกใช้:
Control UI (เว็บ)
แท็บ บันทึก ของ Control UI จะติดตามไฟล์เดียวกันโดยใช้logs.tail
ดู Control UI สำหรับวิธีเปิดใช้งาน
บันทึกเฉพาะช่องทาง
หากต้องการกรองกิจกรรมของช่องทาง (WhatsApp/Telegram/ฯลฯ) ให้ใช้:รูปแบบบันทึก
บันทึกไฟล์ (JSONL)
แต่ละบรรทัดในไฟล์บันทึกเป็นออบเจ็กต์ JSON CLI และ Control UI จะแยกวิเคราะห์ รายการเหล่านี้เพื่อแสดงเอาต์พุตที่มีโครงสร้าง (เวลา ระดับ ระบบย่อย ข้อความ) ระเบียน JSONL ของบันทึกไฟล์ยังมีฟิลด์ระดับบนสุดที่เครื่องกรองได้เมื่อ พร้อมใช้งาน:hostname: ชื่อโฮสต์ Gatewaymessage: ข้อความบันทึกที่ทำให้แบนราบสำหรับการค้นหาข้อความเต็มagent_id: รหัสเอเจนต์ที่ใช้งานอยู่เมื่อการเรียกบันทึกมีบริบทเอเจนต์session_id: รหัส/คีย์เซสชันที่ใช้งานอยู่เมื่อการเรียกบันทึกมีบริบทเซสชันchannel: ช่องทางที่ใช้งานอยู่เมื่อการเรียกบันทึกมีบริบทช่องทาง
เอาต์พุตคอนโซล
บันทึกคอนโซล รับรู้ TTY และจัดรูปแบบเพื่อให้อ่านง่าย:- คำนำหน้าระบบย่อย (เช่น
gateway/channels/whatsapp) - สีตามระดับ (info/warn/error)
- โหมดแบบกะทัดรัดหรือ JSON ที่เลือกได้
logging.consoleStyle
บันทึก WebSocket ของ Gateway
openclaw gateway ยังมีการบันทึกโปรโตคอล WebSocket สำหรับทราฟฟิก RPC:
- โหมดปกติ: เฉพาะผลลัพธ์ที่น่าสนใจ (ข้อผิดพลาด ข้อผิดพลาดการแยกวิเคราะห์ การเรียกที่ช้า)
--verbose: ทราฟฟิกคำขอ/คำตอบทั้งหมด--ws-log auto|compact|full: เลือกรูปแบบการแสดงแบบละเอียด--compact: ชื่อแทนของ--ws-log compact
การกำหนดค่าการบันทึก
การกำหนดค่าการบันทึกทั้งหมดอยู่ใต้logging ใน ~/.openclaw/openclaw.json
ระดับบันทึก
logging.level: ระดับของ บันทึกไฟล์ (JSONL)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: ส่งออกการเริ่มคำขอ คำตอบ fetch เฮดเดอร์ SDK เหตุการณ์สตรีมแรก การเสร็จสิ้นสตรีม และข้อผิดพลาดทรานสปอร์ตที่ระดับinfoOPENCLAW_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 logs --follow
และแท็บบันทึกของ Control UI จะแสดงข้อมูลเหล่านี้ หากไม่มีแฟล็ก การวินิจฉัยเดียวกัน
ยังพร้อมใช้งานที่ระดับ debug
การเชื่อมโยงเทรซ
บันทึกไฟล์เป็น JSONL เมื่อการเรียกบันทึกมีบริบทเทรซการวินิจฉัยที่ถูกต้อง OpenClaw จะเขียนฟิลด์เทรซเป็นคีย์ JSON ระดับบนสุด (traceId, spanId,
parentSpanId, traceFlags) เพื่อให้ตัวประมวลผลบันทึกภายนอกสามารถเชื่อมโยงบรรทัด
กับ OTEL spans และการส่งต่อ traceparent ของผู้ให้บริการได้
คำขอ HTTP ของ Gateway และเฟรม WebSocket ของ Gateway จะสร้างขอบเขตเทรซคำขอภายใน
บันทึกและเหตุการณ์วินิจฉัยที่ส่งออกภายในขอบเขต async นั้นจะสืบทอด
เทรซคำขอเมื่อไม่ได้ส่งบริบทเทรซอย่างชัดเจน เทรซการรันเอเจนต์และ
การเรียกโมเดลจะกลายเป็นลูกของเทรซคำขอที่ใช้งานอยู่ ดังนั้นบันทึกในเครื่อง
สแนปชอตการวินิจฉัย OTEL spans และเฮดเดอร์ traceparent ของผู้ให้บริการที่เชื่อถือได้
สามารถเชื่อมกันด้วย traceId ได้โดยไม่ต้องบันทึกเนื้อหาคำขอดิบหรือเนื้อหาโมเดล
ระเบียนบันทึกวงจรชีวิตของการสนทนายังไหลไปยังบันทึก OTLP เมื่อเปิดใช้งานการส่งออกบันทึก OpenTelemetry
โดยใช้แอตทริบิวต์แบบมีขอบเขตเดียวกับบันทึกไฟล์
ขนาดและเวลาของการเรียกโมเดล
การวินิจฉัยการเรียกโมเดลบันทึกการวัดคำขอ/คำตอบแบบมีขอบเขตโดยไม่ จับเนื้อหาพรอมป์หรือคำตอบดิบ:requestPayloadBytes: ขนาดเป็นไบต์ UTF-8 ของเพย์โหลดคำขอโมเดลสุดท้ายresponseStreamBytes: ขนาดเป็นไบต์ UTF-8 ของเหตุการณ์คำตอบโมเดลแบบสตรีมtimeToFirstByteMs: เวลาที่ผ่านไปก่อนเหตุการณ์คำตอบแบบสตรีมรายการแรกdurationMs: ระยะเวลารวมของการเรียกโมเดล
รูปแบบคอนโซล
logging.consoleStyle:
pretty: เป็นมิตรต่อมนุษย์ มีสี พร้อมเวลาประทับcompact: เอาต์พุตที่กระชับกว่า (เหมาะที่สุดสำหรับเซสชันยาว)json: JSON ต่อบรรทัด (สำหรับตัวประมวลผลบันทึก)
การปกปิดข้อมูล
OpenClaw สามารถปกปิดโทเค็นที่ละเอียดอ่อนก่อนที่จะไปถึงเอาต์พุตคอนโซล บันทึกไฟล์ ระเบียนบันทึก OTLP ข้อความทรานสคริปต์เซสชันที่คงอยู่ หรือเพย์โหลดเหตุการณ์เครื่องมือของ Control UI (อาร์กิวเมนต์เริ่มต้นของเครื่องมือ เพย์โหลดผลลัพธ์บางส่วน/สุดท้าย เอาต์พุต exec ที่ได้มา และสรุปแพตช์):logging.redactSensitive:off|tools(ค่าเริ่มต้น:tools)logging.redactPatterns: รายการสตริง regex เพื่อแทนที่ชุดค่าเริ่มต้น รูปแบบที่กำหนดเองจะใช้เพิ่มเติมจากค่าเริ่มต้นในตัวสำหรับเพย์โหลดเครื่องมือของ Control UI ดังนั้นการเพิ่มรูปแบบจะไม่ทำให้การปกปิดค่าที่ค่าเริ่มต้นตรวจพบอยู่แล้วอ่อนลง
logging.redactSensitive: "off" ปิดใช้งานเฉพาะนโยบายบันทึก/ทรานสคริปต์ทั่วไปนี้
OpenClaw ยังคงปกปิดเพย์โหลดขอบเขตความปลอดภัยที่สามารถแสดงให้ไคลเอนต์ UI
ชุดข้อมูลสนับสนุน ผู้สังเกตการณ์การวินิจฉัย พรอมป์อนุมัติ หรือเครื่องมือเอเจนต์เห็นได้
ตัวอย่างรวมถึงเหตุการณ์การเรียกเครื่องมือของ Control UI เอาต์พุต sessions_history
การส่งออกข้อมูลสนับสนุนการวินิจฉัย การสังเกตข้อผิดพลาดของผู้ให้บริการ การแสดงคำสั่งอนุมัติ exec
และบันทึกโปรโตคอล WebSocket ของ Gateway logging.redactPatterns ที่กำหนดเอง
ยังสามารถเพิ่มรูปแบบเฉพาะโปรเจกต์บนพื้นผิวเหล่านั้นได้
การวินิจฉัยและ OpenTelemetry
การวินิจฉัยคือเหตุการณ์ที่มีโครงสร้างและเครื่องอ่านได้สำหรับการรันโมเดลและ เทเลเมทรีการไหลของข้อความ (Webhooks การเข้าคิว สถานะเซสชัน) ไม่ได้ แทนที่บันทึก แต่จะป้อนข้อมูลให้ metrics, traces และ exporters เหตุการณ์จะถูกส่งออก ในโปรเซสไม่ว่าคุณจะส่งออกหรือไม่ก็ตาม พื้นผิวที่อยู่ติดกันสองส่วน:- การส่งออก OpenTelemetry — ส่ง metrics, traces และบันทึกผ่าน OTLP/HTTP ไปยัง collector หรือ backend ที่เข้ากันได้กับ OpenTelemetry ใดก็ได้ (Grafana, Datadog, Honeycomb, New Relic, Tempo, ฯลฯ) การกำหนดค่าทั้งหมด แค็ตตาล็อกสัญญาณ ชื่อ metric/span ตัวแปรสภาพแวดล้อม และโมเดลความเป็นส่วนตัวอยู่ในหน้าเฉพาะ: การส่งออก OpenTelemetry
- แฟล็กการวินิจฉัย — แฟล็กบันทึกดีบักแบบเจาะจงที่ส่งบันทึกเพิ่มเติมไปยัง
logging.fileโดยไม่เพิ่มlogging.levelแฟล็กไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก และรองรับไวลด์การ์ด (telegram.*,*) กำหนดค่าใต้diagnostics.flagsหรือผ่านการแทนที่ด้วยตัวแปรสภาพแวดล้อมOPENCLAW_DIAGNOSTICS=...คู่มือฉบับเต็ม: แฟล็กการวินิจฉัย
เคล็ดลับการแก้ไขปัญหา
- ติดต่อ Gateway ไม่ได้? เรียกใช้
openclaw doctorก่อน - บันทึกว่างเปล่า? ตรวจสอบว่า Gateway กำลังทำงานและเขียนไปยังเส้นทางไฟล์
ใน
logging.file - ต้องการรายละเอียดเพิ่มเติม? ตั้งค่า
logging.levelเป็นdebugหรือtraceแล้วลองอีกครั้ง
ที่เกี่ยวข้อง
- การส่งออก OpenTelemetry — การส่งออก OTLP/HTTP, แค็ตตาล็อก metric/span, โมเดลความเป็นส่วนตัว
- แฟล็กการวินิจฉัย — แฟล็กบันทึกดีบักแบบเจาะจง
- กลไกภายในของการบันทึก Gateway — รูปแบบบันทึก WS, คำนำหน้าระบบย่อย และการจับคอนโซล
- ข้อมูลอ้างอิงการกำหนดค่า — ข้อมูลอ้างอิงฟิลด์
diagnostics.*ทั้งหมด