Diagnostics
แฟล็กการวินิจฉัย
แฟล็กการวินิจฉัยช่วยให้คุณเปิดใช้บันทึกดีบักแบบเจาะจงได้โดยไม่ต้องเปิดการบันทึกแบบละเอียดทั่วทั้งระบบ แฟล็กเป็นแบบ opt-in และจะไม่มีผล เว้นแต่ระบบย่อยจะตรวจสอบแฟล็กเหล่านั้น
วิธีการทำงาน
- แฟล็กเป็นสตริง (ไม่สนใจตัวพิมพ์ใหญ่เล็ก)
- คุณสามารถเปิดใช้แฟล็กใน config หรือผ่านการ override ด้วย env ได้
- รองรับ wildcard:
telegram.*ตรงกับtelegram.http*เปิดใช้แฟล็กทั้งหมด
เปิดใช้ผ่าน config
{ "diagnostics": { "flags": ["telegram.http"] }}หลายแฟล็ก:
{ "diagnostics": { "flags": ["telegram.http", "brave.http", "gateway.*"] }}รีสตาร์ต Gateway หลังจากเปลี่ยนแฟล็ก
Env override (ครั้งเดียว)
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payloadปิดใช้แฟล็กทั้งหมด:
OPENCLAW_DIAGNOSTICS=0OPENCLAW_DIAGNOSTICS=0 เป็นการ override เพื่อปิดใช้ในระดับโปรเซส: จะปิดใช้
แฟล็กจากทั้ง env และ config สำหรับโปรเซสนั้น
แฟล็กการทำ profiling
แฟล็ก profiler เปิดใช้ span การจับเวลาแบบเจาะจงโดยไม่เพิ่มระดับการบันทึก โดยรวม แฟล็กเหล่านี้ปิดอยู่ตามค่าเริ่มต้น
เปิดใช้ span ทั้งหมดที่มี profiler เป็น gate สำหรับการรัน Gateway หนึ่งครั้ง:
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway runเปิดใช้เฉพาะ span ของ profiler สำหรับการ dispatch การตอบกลับ:
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway runเปิดใช้เฉพาะ span ของ profiler สำหรับการเริ่มต้น app-server/tool/thread ของ Codex:
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway runเปิดใช้แฟล็ก profiler จาก config:
{ "diagnostics": { "flags": ["reply.profiler", "codex.profiler"] }}รีสตาร์ต Gateway หลังจากเปลี่ยนแฟล็กใน config หากต้องการปิดใช้แฟล็ก profiler
ให้ลบแฟล็กนั้นออกจาก diagnostics.flags แล้วรีสตาร์ต หากต้องการปิดใช้แฟล็ก
diagnostics ทุกตัวชั่วคราว แม้ config จะเปิดใช้แฟล็ก profiler อยู่ ให้เริ่มโปรเซสด้วย:
OPENCLAW_DIAGNOSTICS=0 openclaw gateway runอาร์ติแฟกต์ Timeline
แฟล็ก timeline จะเขียนเหตุการณ์การจับเวลาแบบมีโครงสร้างสำหรับการเริ่มต้นและรันไทม์
สำหรับ QA harness ภายนอก:
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway runคุณยังสามารถเปิดใช้ใน config ได้ด้วย:
{ "diagnostics": { "flags": ["timeline"] }}พาธไฟล์ timeline ยังคงมาจาก
OPENCLAW_DIAGNOSTICS_TIMELINE_PATH เมื่อเปิดใช้ timeline จาก
config เท่านั้น span ของการโหลด config ช่วงแรกสุดจะไม่ถูกส่งออก เพราะ OpenClaw
ยังไม่ได้อ่าน config; span การเริ่มต้นถัดไปจะใช้แฟล็กจาก config
OPENCLAW_DIAGNOSTICS=1, OPENCLAW_DIAGNOSTICS=all และ
OPENCLAW_DIAGNOSTICS=* จะเปิดใช้ timeline ด้วย เพราะค่าเหล่านี้เปิดใช้แฟล็ก
diagnostics ทุกตัว แนะนำให้ใช้ timeline เมื่อคุณต้องการเฉพาะอาร์ติแฟกต์การจับเวลา
JSONL เท่านั้น
เรคคอร์ด timeline ใช้ envelope openclaw.diagnostics.v1 เหตุการณ์อาจมี
รหัสโปรเซส ชื่อเฟส ชื่อ span ระยะเวลา plugin ids จำนวน dependency
ตัวอย่างความล่าช้าของ event-loop ชื่อการดำเนินการของ provider สถานะออกของ child-process
และชื่อ/ข้อความข้อผิดพลาดตอนเริ่มต้น ให้ถือว่าไฟล์ timeline เป็นอาร์ติแฟกต์ diagnostics
ในเครื่อง ตรวจทานก่อนแชร์ออกนอกเครื่องของคุณ
บันทึกไปที่ใด
แฟล็กจะส่งบันทึกไปยังไฟล์บันทึก diagnostics มาตรฐาน โดยค่าเริ่มต้น:
/tmp/openclaw/openclaw-YYYY-MM-DD.logหากคุณตั้งค่า logging.file ให้ใช้พาธนั้นแทน บันทึกเป็น JSONL (หนึ่ง JSON object ต่อบรรทัด) การปกปิดข้อมูลยังคงใช้ตาม logging.redactSensitive
ดึงบันทึก
เลือกไฟล์บันทึกล่าสุด:
ls -t /tmp/openclaw/openclaw-*.log | head -n 1กรอง diagnostics ของ Telegram HTTP:
rg "telegram http error" /tmp/openclaw/openclaw-*.logกรอง diagnostics ของ Brave Search HTTP:
rg "brave http" /tmp/openclaw/openclaw-*.logหรือ tail ระหว่างทำซ้ำปัญหา:
tail -f /tmp/openclaw/openclaw-$(date +%F).log | rg "telegram http error"สำหรับ Gateway ระยะไกล คุณยังสามารถใช้ openclaw logs --follow ได้ด้วย (ดู /cli/logs)
หมายเหตุ
- หากตั้งค่า
logging.levelสูงกว่าwarnบันทึกเหล่านี้อาจถูกระงับ ค่าเริ่มต้นinfoใช้ได้ brave.httpบันทึก URL/พารามิเตอร์ query ของคำขอ Brave Search, สถานะ/เวลาตอบกลับ และเหตุการณ์ cache hit/miss/write โดยจะไม่บันทึก API keys หรือ response bodies แต่คำค้นหาอาจเป็นข้อมูลละเอียดอ่อนได้- เปิดใช้แฟล็กทิ้งไว้ได้อย่างปลอดภัย แฟล็กจะมีผลเฉพาะกับปริมาณบันทึกของระบบย่อยนั้นเท่านั้น
- ใช้ /logging เพื่อเปลี่ยนปลายทาง ระดับ และการปกปิดข้อมูลของบันทึก