การบันทึกล็อก¶
สำหรับภาพรวมที่ผู้ใช้มองเห็น (CLI + Control UI + คอนฟิก) ดูที่ /logging
OpenClaw มี “พื้นผิว” การบันทึกล็อกสองแบบ:
- เอาต์พุตคอนโซล (สิ่งที่คุณเห็นในเทอร์มินัล / Debug UI)
- ล็อกไฟล์ (บรรทัดJSON) ที่เขียนโดยตัวบันทึกล็อกของGateway
ตัวบันทึกล็อกแบบไฟล์¶
- ไฟล์ล็อกแบบหมุนเวียนเริ่มต้นอยู่ภายใต้
/tmp/openclaw/(หนึ่งไฟล์ต่อวัน):openclaw-YYYY-MM-DD.log - วันที่ใช้เขตเวลาท้องถิ่นของโฮสต์Gateway
- สามารถกำหนดพาธไฟล์ล็อกและระดับได้ผ่าน
~/.openclaw/openclaw.json: logging.filelogging.level
รูปแบบไฟล์เป็นอ็อบเจ็กต์JSONหนึ่งรายการต่อหนึ่งบรรทัด
แท็บ Logs ใน Control UI จะ tail ไฟล์นี้ผ่านGateway (logs.tail)
CLI ก็ทำได้เช่นกัน:
CLI can do the same:
openclaw logs --follow
Verbose เทียบกับระดับล็อก
- ล็อกไฟล์ ถูกควบคุมโดย
logging.levelเท่านั้น --verboseมีผลเฉพาะกับ ความละเอียดของคอนโซล (และสไตล์ล็อกWS); ไม่ได้ เพิ่มระดับล็อกไฟล์- หากต้องการบันทึกรายละเอียดที่มีเฉพาะโหมดverboseลงในล็อกไฟล์ ให้ตั้ง
logging.levelเป็นdebugหรือtrace
การจับเอาต์พุตคอนโซล¶
CLI จะจับ console.log/info/warn/error/debug/trace และเขียนลงล็อกไฟล์
พร้อมกับยังพิมพ์ไปที่ stdout/stderr
คุณสามารถปรับความละเอียดของคอนโซลแยกต่างหากได้ผ่าน:
logging.consoleLevel(ค่าเริ่มต้นinfo)logging.consoleStyle(pretty|compact|json)
การปกปิดสรุปเครื่องมือ¶
สรุปเครื่องมือแบบverbose (เช่น 🛠️ Exec: ...) สามารถปกปิดโทเคนที่อ่อนไหวก่อนเข้าสู่
สตรีมคอนโซลได้ ฟีเจอร์นี้เป็น เฉพาะเครื่องมือเท่านั้น และไม่แก้ไขล็อกไฟล์ This is tools-only and does not alter file logs.
logging.redactSensitive:off|tools(ค่าเริ่มต้น:tools)logging.redactPatterns: อาร์เรย์ของสตริงregex (แทนที่ค่าเริ่มต้น)- ใช้สตริงregexแบบดิบ (auto
gi) หรือ/pattern/flagsหากต้องการแฟล็กแบบกำหนดเอง - การจับคู่จะถูกปกปิดโดยคงอักขระ 6 ตัวแรก + 4 ตัวสุดท้าย (ความยาว >= 18) มิฉะนั้นเป็น
*** - ค่าเริ่มต้นครอบคลุมการกำหนดคีย์ทั่วไป, แฟล็กCLI, ฟิลด์JSON, เฮดเดอร์bearer, บล็อกPEM และคำนำหน้าโทเคนยอดนิยม
ล็อก WebSocket ของGateway¶
Gateway พิมพ์ล็อกโปรโตคอลWebSocket ได้สองโหมด:
- โหมดปกติ (ไม่มี
--verbose): พิมพ์เฉพาะผลลัพธ์RPCที่ “น่าสนใจ”: - ข้อผิดพลาด (
ok=false) - การเรียกที่ช้า (เกณฑ์เริ่มต้น:
>= 50ms) - ข้อผิดพลาดในการพาร์ส
- โหมดVerbose (
--verbose): พิมพ์ทราฟฟิกคำขอ/คำตอบWSทั้งหมด
สไตล์ล็อกWS¶
openclaw gateway รองรับสวิตช์สไตล์แบบต่อGateway:
--ws-log auto(ค่าเริ่มต้น): โหมดปกติปรับให้เหมาะสม; โหมดverboseใช้ออกพุตแบบกระชับ--ws-log compact: เอาต์พุตแบบกระชับ (จับคู่คำขอ/คำตอบ) เมื่อเป็นverbose--ws-log full: เอาต์พุตแบบเต็มต่อเฟรมเมื่อเป็นverbose--compact: ชื่อเรียกแทนของ--ws-log compact
ตัวอย่าง:
# optimized (only errors/slow)
openclaw gateway
# show all WS traffic (paired)
openclaw gateway --verbose --ws-log compact
# show all WS traffic (full meta)
openclaw gateway --verbose --ws-log full
การจัดรูปแบบคอนโซล (การบันทึกล็อกระดับซับซิสเต็ม)¶
ตัวจัดรูปแบบคอนโซล รับรู้TTY และพิมพ์บรรทัดที่สม่ำเสมอพร้อมคำนำหน้า ตัวบันทึกล็อกของซับซิสเต็มจะจัดกลุ่มเอาต์พุตให้สแกนได้ง่าย Subsystem loggers keep output grouped and scannable.
พฤติกรรม:
- คำนำหน้าซับซิสเต็ม ในทุกบรรทัด (เช่น
[gateway],[canvas],[tailscale]) - สีของซับซิสเต็ม (คงที่ต่อซับซิสเต็ม) พร้อมสีตามระดับ
- แสดงสีเมื่อเอาต์พุตเป็นTTYหรือสภาพแวดล้อมดูเป็นเทอร์มินัลที่สมบูรณ์ (
TERM/COLORTERM/TERM_PROGRAM), เคารพNO_COLOR - ย่อคำนำหน้าซับซิสเต็ม: ตัด
gateway/+channels/ที่นำหน้าออก เหลือ 2 เซกเมนต์สุดท้าย (เช่นwhatsapp/outbound) - ซับล็อกเกอร์แยกตามซับซิสเต็ม (คำนำหน้าอัตโนมัติ + ฟิลด์เชิงโครงสร้าง
{ subsystem }) logRaw()สำหรับเอาต์พุตQR/UX (ไม่มีคำนำหน้า ไม่มีการจัดรูปแบบ)- สไตล์คอนโซล (เช่น
pretty | compact | json) - ระดับล็อกคอนโซล แยกจากระดับล็อกไฟล์ (ไฟล์ยังคงรายละเอียดเต็มเมื่อ
logging.levelถูกตั้งเป็นdebug/trace) - เนื้อความข้อความ WhatsApp จะถูกบันทึกที่ระดับ
debug(ใช้--verboseเพื่อดู)
สิ่งนี้ช่วยคงเสถียรภาพของล็อกไฟล์เดิม ขณะทำให้ออกพุตเชิงโต้ตอบสแกนได้ง่าย