Diagnostics
แฟล็กการวินิจฉัย
แฟล็กการวินิจฉัยจะเปิดใช้งานการบันทึกเพิ่มเติมสำหรับระบบย่อยหนึ่งระบบ โดยไม่เพิ่ม
logging.level ทั้งระบบ แฟล็กจะไม่มีผล เว้นแต่ระบบย่อยนั้นจะตรวจสอบแฟล็กดังกล่าว
วิธีการทำงาน
- แฟล็กเป็นสตริงที่ไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ โดยรวบรวมจาก
diagnostics.flagsใน การกำหนดค่า ร่วมกับค่าที่เขียนทับจากตัวแปรสภาพแวดล้อมOPENCLAW_DIAGNOSTICSจากนั้นตัดค่าซ้ำและแปลงเป็นตัวพิมพ์เล็ก name.*ตรงกับทั้งnameเองและทุกค่าภายใต้name.(ตัวอย่างเช่นtelegram.*ตรงกับtelegram.http)*หรือallเปิดใช้งานทุกแฟล็ก- รีสตาร์ต Gateway หลังจากเปลี่ยน
diagnostics.flagsในการกำหนดค่า เนื่องจากระบบจะไม่ โหลดค่านี้ใหม่แบบทันที
แฟล็กที่รองรับ
| แฟล็ก | เปิดใช้งาน |
|---|---|
telegram.http |
การบันทึกข้อผิดพลาด HTTP ของ Telegram Bot API |
brave.http |
การบันทึกคำขอ/การตอบกลับ/แคชของ Brave Search |
profiler |
ตัววิเคราะห์ประสิทธิภาพขั้นตอนตอบกลับและตัววิเคราะห์ประสิทธิภาพเซิร์ฟเวอร์แอป Codex (ทั้งคู่) |
reply.profiler |
เฉพาะตัววิเคราะห์ประสิทธิภาพขั้นตอนตอบกลับ |
codex.profiler |
เฉพาะตัววิเคราะห์ประสิทธิภาพเซิร์ฟเวอร์แอป Codex |
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) จะเขียนเหตุการณ์การจับเวลาการเริ่มต้น
และรันไทม์แบบมีโครงสร้างเป็น JSONL สำหรับชุดทดสอบ QA ภายนอก:
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 และ =* จะเปิดใช้งานไทม์ไลน์ด้วย เนื่องจากค่าเหล่านี้
เปิดใช้งานทุกแฟล็ก ควรใช้แฟล็ก timeline ที่ระบุขอบเขตเมื่อคุณต้องการเฉพาะ
อาร์ติแฟกต์ JSONL โดยไม่ต้องการแฟล็กการวินิจฉัยอื่นทั้งหมด
ตัวอย่างค่าหน่วงเวลาของลูปเหตุการณ์ในไทม์ไลน์ต้องเลือกรับเพิ่มเติมอีกหนึ่งรายการนอกเหนือจาก
timeline: ตั้งค่า OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 (หรือ on/true/yes) พร้อมกับ
เปิดใช้งานไทม์ไลน์
ระเบียนไทม์ไลน์ใช้เอนเวโลป openclaw.diagnostics.v1 และอาจประกอบด้วย
รหัสโปรเซส ชื่อเฟส ชื่อช่วง ระยะเวลา รหัส Plugin จำนวน
การขึ้นต่อกัน ตัวอย่างค่าหน่วงเวลาของลูปเหตุการณ์ ชื่อการดำเนินการของผู้ให้บริการ สถานะการออกของโปรเซสลูก
และชื่อ/ข้อความข้อผิดพลาดในการเริ่มต้น ให้ถือว่าไฟล์ไทม์ไลน์เป็นอาร์ติแฟกต์การวินิจฉัยภายในเครื่อง
และตรวจสอบก่อนแชร์ออกนอกเครื่องของคุณ
บันทึกถูกเก็บไว้ที่ใด
แฟล็กจะส่งบันทึกไปยังไฟล์บันทึกการวินิจฉัยมาตรฐาน โดยค่าเริ่มต้นคือ:
/tmp/openclaw/openclaw-YYYY-MM-DD.logหากตั้งค่า logging.file ให้ใช้พาธนั้นแทน บันทึกอยู่ในรูปแบบ JSONL (หนึ่งออบเจ็กต์ JSON
ต่อหนึ่งบรรทัด) การปกปิดข้อมูลยังคงใช้ตาม logging.redactSensitive
ดู การบันทึก สำหรับรายละเอียดทั้งหมดเกี่ยวกับการกำหนดพาธไฟล์บันทึก การหมุนเวียนไฟล์ และ
รูปแบบการปกปิดข้อมูล
แยกข้อมูลบันทึก
เลือกไฟล์บันทึกล่าสุด:
ls -t /tmp/openclaw/openclaw-*.log | head -n 1กรองการวินิจฉัย HTTP ของ Telegram:
rg "telegram http error" /tmp/openclaw/openclaw-*.logกรองการวินิจฉัย HTTP ของ Brave Search:
rg "brave http" /tmp/openclaw/openclaw-*.logหรือติดตามบันทึกขณะทำซ้ำปัญหา:
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/พารามิเตอร์การค้นหาของคำขอ Brave Search สถานะ/ระยะเวลา การตอบกลับ และเหตุการณ์พบ/ไม่พบ/เขียนแคช โดยจะไม่บันทึกคีย์ API (ซึ่งส่งเป็นส่วนหัวของคำขอ) หรือเนื้อหาการตอบกลับ แต่คำค้นหาอาจเป็น ข้อมูลละเอียดอ่อน- สามารถเปิดแฟล็กทิ้งไว้ได้อย่างปลอดภัย โดยมีผลเฉพาะต่อปริมาณบันทึกของ ระบบย่อยที่ระบุเท่านั้น
- ใช้ /logging เพื่อเปลี่ยนปลายทาง ระดับ และการปกปิดข้อมูลของบันทึก