Gateway
การบันทึกล็อกของ Gateway
การบันทึกล็อก
สำหรับภาพรวมที่มุ่งเน้นผู้ใช้ (CLI + UI ควบคุม + การกำหนดค่า) โปรดดู /logging
OpenClaw มีพื้นผิวการแสดงล็อกสองแบบ:
- เอาต์พุตคอนโซล - สิ่งที่คุณเห็นในเทอร์มินัล / UI แก้ไขจุดบกพร่อง
- ล็อกไฟล์ - บรรทัด JSON ที่เขียนโดยตัวบันทึกล็อกของ Gateway
เมื่อเริ่มต้น Gateway จะบันทึกโมเดลเริ่มต้นของเอเจนต์ที่ผ่านการแก้ค่าแล้ว รวมถึงค่าเริ่มต้นของโหมดที่มีผลต่อเซสชันใหม่:
agent model: openai/gpt-5.6-sol (thinking=medium, fast=on)thinking มาจากเอเจนต์เริ่มต้น พารามิเตอร์ของโมเดล หรือค่าเริ่มต้นส่วนกลางของเอเจนต์ เมื่อไม่ได้ตั้งค่า จะแสดงเป็น medium ส่วน fast มาจากเอเจนต์เริ่มต้นหรือพารามิเตอร์ fastMode ของโมเดล
ตัวบันทึกล็อกแบบไฟล์
- โดยค่าเริ่มต้น ไฟล์ล็อกแบบหมุนเวียนจะอยู่ภายใต้
/tmp/openclaw/(วันละหนึ่งไฟล์):openclaw-YYYY-MM-DD.logโดยกำหนดวันที่ตามเขตเวลาท้องถิ่นของโฮสต์ Gateway หากไดเรกทอรีนั้นไม่ปลอดภัยหรือเขียนไม่ได้ (เจ้าของไม่ถูกต้อง ทุกคนเขียนได้ หรือเป็นลิงก์เชิงสัญลักษณ์) OpenClaw จะใช้พาธos.tmpdir()/openclaw-<uid>ที่จำกัดขอบเขตตามผู้ใช้แทน ส่วนบน Windows จะใช้พาธสำรองในไดเรกทอรีชั่วคราวของระบบปฏิบัติการนี้เสมอ - ไฟล์ล็อกที่ใช้งานอยู่จะหมุนเวียนเมื่อถึง
logging.maxFileBytes(ค่าเริ่มต้น: 100 MB) โดยเก็บไฟล์ย้อนหลังที่มีหมายเลขไว้สูงสุดห้าไฟล์ (.1ถึง.5) และเขียนต่อไปยังไฟล์ที่ใช้งานอยู่ไฟล์ใหม่ - กำหนดค่าพาธและระดับของไฟล์ล็อกผ่าน
~/.openclaw/openclaw.json:logging.file,logging.level - รูปแบบไฟล์คือออบเจ็กต์ JSON หนึ่งรายการต่อบรรทัด
เส้นทางโค้ดสำหรับการสนทนา เสียงแบบเรียลไทม์ และห้องที่มีการจัดการ ใช้ตัวบันทึกล็อกไฟล์ร่วมกันสำหรับระเบียนวงจรชีวิตแบบจำกัด ซึ่งมีไว้สำหรับการแก้ไขข้อบกพร่องด้านการปฏิบัติการและการส่งออกระเบียนล็อก OTLP ข้อความบทสนทนา เพย์โหลดเสียง รหัสรอบ รหัสการโทร และรหัสรายการของผู้ให้บริการจะไม่ถูกคัดลอกลงในระเบียนล็อก
แท็บล็อกของ UI ควบคุมจะติดตามไฟล์นี้ผ่าน Gateway (logs.tail) CLI ก็ทำเช่นเดียวกัน:
openclaw logs --followโหมดรายละเอียดสูงเทียบกับระดับล็อก
- ล็อกไฟล์ ควบคุมโดย
logging.levelเท่านั้น --verboseมีผลเฉพาะต่อ ระดับรายละเอียดของคอนโซล (และรูปแบบล็อก WS) โดย ไม่ เพิ่มระดับล็อกของไฟล์- หากต้องการบันทึกรายละเอียดที่มีเฉพาะในโหมดรายละเอียดสูงลงในล็อกไฟล์ ให้ตั้ง
logging.levelเป็นdebugหรือtrace - การบันทึกล็อกระดับ Trace ยังรวมสรุประยะเวลาเพื่อการวินิจฉัยสำหรับเส้นทางประมวลผลสำคัญบางรายการ เช่น การเตรียมโรงงานเครื่องมือของ Plugin โปรดดู /tools/plugin#slow-plugin-tool-setup
การบันทึกคอนโซล
CLI บันทึก console.log/info/warn/error/debug/trace เขียนข้อมูลเหล่านั้นลงในล็อกไฟล์ และยังคงแสดงผลไปยัง stdout/stderr
ปรับระดับรายละเอียดของคอนโซลแยกกันได้:
logging.consoleLevel(ค่าเริ่มต้นinfo)logging.consoleStyle(pretty|compact|json; ค่าเริ่มต้นเป็นprettyบน TTY และเป็นcompactในกรณีอื่น)
การปกปิดข้อมูล
OpenClaw ปกปิดโทเค็นที่ละเอียดอ่อนก่อนที่เอาต์พุตล็อกหรือบทสนทนาจะออกจากกระบวนการ นโยบายการปกปิดข้อมูลนี้ใช้กับปลายทางข้อความของคอนโซล ล็อกไฟล์ ระเบียนล็อก OTLP และบทสนทนาของเซสชัน ดังนั้นค่าความลับที่ตรงกันจะถูกปกปิดก่อนเขียนบรรทัด JSONL หรือข้อความลงดิสก์
logging.redactSensitive:off|tools(ค่าเริ่มต้น:tools)logging.redactPatterns: อาร์เรย์ของสตริงนิพจน์ทั่วไป (แทนที่ค่าเริ่มต้น)- ใช้สตริงนิพจน์ทั่วไปโดยตรง (ใช้
giอัตโนมัติ) หรือ/pattern/flagsสำหรับแฟล็กที่กำหนดเอง - ค่าที่ตรงกันจะถูกปกปิดโดยคงอักขระ 6 ตัวแรก + 4 ตัวท้ายไว้ (สำหรับค่าที่มีความยาว >= 18 อักขระ) ส่วนค่าที่สั้นกว่าจะกลายเป็น
*** - ค่าเริ่มต้นครอบคลุมการกำหนดค่าคีย์ทั่วไป แฟล็ก CLI ฟิลด์ JSON ส่วนหัว Bearer บล็อก PEM คำนำหน้าโทเค็นของผู้จำหน่ายยอดนิยม และชื่อฟิลด์ข้อมูลรับรองการชำระเงิน (หมายเลขบัตร, CVC/CVV, โทเค็นการชำระเงินร่วม, ข้อมูลรับรองการชำระเงิน)
- ใช้สตริงนิพจน์ทั่วไปโดยตรง (ใช้
ขอบเขตความปลอดภัยบางรายการจะปกปิดข้อมูลเสมอโดยไม่ขึ้นกับ logging.redactSensitive ได้แก่ เหตุการณ์การเรียกใช้เครื่องมือของ UI ควบคุม เอาต์พุตเครื่องมือ sessions_history การส่งออกข้อมูลสนับสนุนเพื่อการวินิจฉัย การสังเกตข้อผิดพลาดของผู้ให้บริการ การแสดงคำสั่งเพื่อขออนุมัติการดำเนินการ และล็อกโปรโตคอล WebSocket ของ Gateway พื้นผิวเหล่านี้ยังคงใช้ logging.redactPatterns เป็นรูปแบบเพิ่มเติม แต่ redactSensitive: "off" จะไม่ทำให้พื้นผิวเหล่านี้ส่งออกความลับแบบไม่ปกปิด
ล็อก WebSocket ของ Gateway
Gateway แสดงล็อกโปรโตคอล WebSocket ในสองโหมด:
- โหมดปกติ (ไม่มี
--verbose): แสดงเฉพาะผลลัพธ์ RPC ที่ "น่าสนใจ" ได้แก่ ข้อผิดพลาด (ok=false) การเรียกที่ช้า (เกณฑ์เริ่มต้น:>= 50ms) และข้อผิดพลาดในการแยกวิเคราะห์ - โหมดรายละเอียดสูง (
--verbose): แสดงทราฟฟิกคำขอ/การตอบกลับ WS ทั้งหมด
รูปแบบล็อก WS
openclaw gateway รองรับตัวเลือกเปลี่ยนรูปแบบสำหรับแต่ละ Gateway:
--ws-log auto(ค่าเริ่มต้น): โหมดปกติได้รับการปรับให้เหมาะสม ส่วนโหมดรายละเอียดสูงใช้เอาต์พุตแบบกระชับ--ws-log compact: เอาต์พุตแบบกระชับ (จับคู่คำขอ/การตอบกลับ) เมื่ออยู่ในโหมดรายละเอียดสูง--ws-log full: เอาต์พุตแบบเต็มสำหรับแต่ละเฟรมเมื่ออยู่ในโหมดรายละเอียดสูง--compact: นามแฝงสำหรับ--ws-log compact
# ปรับให้เหมาะสม (เฉพาะข้อผิดพลาด/รายการที่ช้า)openclaw gateway # แสดงทราฟฟิก WS ทั้งหมด (แบบจับคู่)openclaw gateway --verbose --ws-log compact # แสดงทราฟฟิก WS ทั้งหมด (ข้อมูลเมตาแบบเต็ม)openclaw gateway --verbose --ws-log fullการจัดรูปแบบคอนโซล (การบันทึกล็อกตามระบบย่อย)
ตัวจัดรูปแบบคอนโซล รับรู้ TTY และแสดงบรรทัดที่สอดคล้องกันพร้อมคำนำหน้า ตัวบันทึกล็อกของระบบย่อยจะจัดกลุ่มเอาต์พุตให้อ่านไล่ดูได้ง่าย:
- คำนำหน้าระบบย่อย ในทุกบรรทัด (เช่น
[gateway],[canvas],[tailscale]) - สีของระบบย่อย (คงที่สำหรับแต่ละระบบย่อย โดยแฮชจากชื่อ) รวมถึงการใช้สีตามระดับ
- ใช้สีเมื่อเอาต์พุตเป็น TTY หรือสภาพแวดล้อมมีลักษณะเป็นเทอร์มินัลที่รองรับการแสดงผลขั้นสูง (
TERM/COLORTERM/TERM_PROGRAM) โดยเคารพNO_COLORและFORCE_COLOR - คำนำหน้าระบบย่อยแบบย่อ: ตัดส่วน
gateway/,channels/หรือproviders/ที่อยู่ข้างหน้าออก จากนั้นเก็บส่วนที่เหลือไว้ไม่เกิน 2 ส่วนสุดท้าย (เช่นchannels/turn/kernelจะแสดงเป็นturn/kernel) ระบบย่อยของช่องทางที่รู้จัก (telegram,whatsapp,slackเป็นต้น) จะยุบเหลือเพียงชื่อช่องทางเสมอ - ตัวบันทึกล็อกย่อยตามระบบย่อย (เติมคำนำหน้าอัตโนมัติ + ฟิลด์แบบมีโครงสร้าง
{ subsystem }) logRaw()สำหรับเอาต์พุต QR/UX (ไม่มีคำนำหน้าและไม่มีการจัดรูปแบบ)- รูปแบบคอนโซล:
pretty|compact|json - ระดับล็อกคอนโซล แยกจากระดับล็อกไฟล์ (ไฟล์จะเก็บรายละเอียดทั้งหมดเมื่อ
logging.levelเป็นdebug/trace) - เนื้อหาข้อความ WhatsApp บันทึกที่ระดับ
debug(ใช้--verboseเพื่อดู)
วิธีนี้ช่วยให้ล็อกไฟล์คงที่ พร้อมทั้งทำให้เอาต์พุตแบบโต้ตอบอ่านไล่ดูได้ง่าย