แปลง ANSI Escape Code เป็น HTML: แสดงผล Terminal Log ให้ครบทุกสี
เปลี่ยน terminal log ที่เต็มไปด้วย ANSI escape code ให้เป็น HTML ที่มีสไตล์ครบถ้วนด้วย ANSI to HTML Converter — รองรับสี ตัวหนา ตัวเอียง ขีดเส้นใต้ ขีดฆ่า 256-color และ truecolor พร้อมพรีวิวโหมดมืดหรือสว่าง ทำงานฝั่งไคลเอนต์ทั้งหมด
Table of Contents
คัดลอกผลลัพธ์จาก terminal ออกมาแชร์ แล้วสีต่าง ๆ มักหายไปตลอดทาง สิ่งที่บนหน้าจอของคุณดูดี — ข้อความ build สำเร็จสีเขียว คำเตือนสีเหลือง และ stack trace สีแดง — เมื่อไปอยู่ในหน้าวิกิหรือ bug tracker กลับกลายเป็นตัวอักษรประหลาดอย่าง [32m✔ Tests passed[0m ที่อ่านไม่รู้เรื่อง ANSI to HTML Converter ถูกสร้างขึ้นมาเพื่อแก้ปัญหานี้โดยเฉพาะ เพียงวาง terminal log ที่มี ANSI escape code ลงไป คุณจะได้ HTML ที่จัดสไตล์เรียบร้อยกลับมาภายในไม่กี่วินาที โดยสีและสไตล์ข้อความยังอยู่ครบถ้วน
เครื่องมือนี้อ่านทั้งสี ตัวหนา ตัวเอียง ขีดเส้นใต้ และขีดฆ่า รวมถึงส่วนขยาย 256-color และ truecolor สมัยใหม่ จากนั้นแสดงผลใน live preview ที่สลับได้ระหว่างโหมดมืดและโหมดสว่าง ก่อนที่คุณจะกดคัดลอกเอาต์พุตไปใช้งาน บทความนี้จะพาไปดูวิธีใช้เครื่องมือทีละขั้นตอน ความหมายของ escape code เหล่านั้นว่าซ่อนอะไรไว้ และสถานการณ์จริงที่การแปลง terminal log เป็น HTML ช่วยประหยัดเวลาได้จริง
ที่สำคัญที่สุด เนื่องจากทุกอย่างทำงานฝั่งไคลเอนต์ทั้งหมด log ของคุณจึงไม่เคยออกจากเบราว์เซอร์ ซึ่งสำคัญมากเมื่อคุณกำลังทำงานกับ log จากระบบ production หรือข้อมูลวินิจฉัยของลูกค้า
ทำไมต้องใช้ ANSI to HTML Converter?
- อ่าน CI log ในเอกสารได้ง่ายขึ้น — ผลลัพธ์จากระบบ CI พึ่งพาสีอย่างมาก เขียวคือผ่าน แดงคือพัง เหลืองคือข้าม การแปลง log เป็น HTML ช่วยรักษาภาษาของสีไว้ ทำให้ runbook หน้าวิกิ และเอกสารภายในยังสแกนหาจุดสำคัญได้ทันที แทนที่จะจมอยู่ในกอง escape sequence
- รักษาความหมาย ไม่ใช่แค่ตัวอักษร — สีมีข้อมูลฝังอยู่ บรรทัด ERROR สีแดงยังโดดออกมาใน HTML เหมือนตอนอยู่ใน terminal แต่การวางแบบ plain text จะลบทุกอย่างนั้นทิ้งไป
- ประหยัดเวลาจากการจัดสไตล์เอง — การห่อ log หลายร้อยบรรทัดด้วยแท็ก <span> ด้วยมือเป็นงานน่าเบื่อและผิดพลาดง่าย เครื่องมือทำให้เสร็จในการวางครั้งเดียว
- เห็นผลลัพธ์ในบริบทจริง — live preview แบบมืดหรือสว่างช่วยให้คุณเช็กได้ก่อนว่าเอาต์พุตจะอ่านง่ายแค่ไหนบนพื้นหลังที่มันจะไปอยู่จริง
- log ที่มีข้อมูลอ่อนไหวยังเป็นส่วนตัว — การประมวลผลเกิดขึ้นในเบราว์เซอร์ล้วน ๆ ไม่มีการอัปโหลด จึงใช้กับ log ระบบ production หรือข้อมูลลูกค้าได้อย่างปลอดภัย
- ไม่ต้องติดตั้งอะไรเลย — ไม่มีโปรแกรม ไม่มีบัญชี ไม่มี build step เปิดหน้าเว็บ วาง log แล้วคัดลอก
ฟีเจอร์หลักที่ควรรู้
| ฟีเจอร์ | ทำอะไรได้ |
|---|---|
| แยกวิเคราะห์ ANSI escape | แปลง terminal log ที่มี ANSI escape code เป็น HTML ที่มีสไตล์ พร้อมล้าง control sequence ดิบออกไป |
| ครอบคลุมสไตล์ครบ | เรนเดอร์สี ตัวหนา ตัวเอียง ขีดเส้นใต้ และขีดฆ่า ได้ตรงกับที่ terminal แสดง |
| รองรับ 256-color และ truecolor | รองรับรูปแบบสีเพิ่มเติม 38;5;n และ 38;2;r;g;b ที่เครื่องมือ CLI ยุคใหม่ใช้ |
| พรีวิวมืดหรือสว่างแบบสด | สลับพื้นหลังพรีวิวให้ตรงกับปลายทาง และตรวจ contrast ก่อนนำผลลัพธ์ไปใช้ |
| เอาต์พุตคัดลอก-วาง | กดคัดลอก HTML ที่สร้างไว้ด้วยคลิกเดียว พร้อมนำไปฝังในเอกสาร วิกิ หน้า CMS หรือ bug tracker |
| ทำงานฝั่งไคลเอนต์ทั้งหมด | การเรนเดอร์เกิดขึ้นในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลด ไม่มีบัญชี ไม่มีการติดตามเนื้อหา log |
จุดที่น่าสังเกตเพิ่มเติม:
- สีสมัยใหม่แม่นยำ — test runner, linter และ build tool จำนวนมากปล่อยผลลัพธ์เป็น 256-color และ truecolor เครื่องมือจะแปลงค่าเหล่านี้เป็น CSS เพื่อให้ผลลัพธ์ดูเหมือนใน terminal ของคุณจริง ๆ ไม่ใช่เพียงเฉดที่คล้ายกัน
- HTML มาตรฐาน พกพาได้ — สไตล์เขียนด้วย HTML และ CSS ธรรมดา ผลลัพธ์จึงใช้ได้ทุกที่ที่รับ HTML
- เห็นผลทันที — พรีวิวอัปเดตตามที่คุณวาง ยืนยันได้ว่าทุกบรรทัดเรนเดอร์ถูกต้องก่อนกดคัดลอก
วิธีใช้งาน ANSI to HTML Converter
- วาง terminal log ดิบ — คัดลอกผลลัพธ์จาก terminal ตามที่ปรากฏ รวมถึง escape code ทั้งหมด แล้ววางลงช่อง input พยายามวางเป็นบรรทัดสมบูรณ์ เพราะ escape sequence กินหลายอักขระ การวางครึ่ง ๆ กลาง ๆ อาจทิ้ง sequence ที่ยังไม่ปิด
- เลือกธีมพรีวิว — เลือกโหมดมืดหรือสว่างใน live preview ให้ตรงกับพื้นหลังของหน้าที่ HTML จะไปอยู่
- ตรวจสไตล์ที่เรนเดอร์แล้ว — ไล่ดูพรีวิวหาสัญญาณที่สำคัญ เช่น error สีแดง ผลผ่านสีเขียว หัวข้อตัวหนา และยืนยันว่าทุกบรรทัดดูเหมือนตอนอยู่ใน terminal
- คัดลอกเอาต์พุต HTML — กดปุ่มคัดลอกเพื่อเอา markup ที่สร้างไว้ไปใช้ในคลิกเดียว
- ฝังลงในจุดที่ต้องการ — นำ HTML ไปวางในวิกิ หน้าเอกสาร CMS บล็อก หรือรายงานบั๊ก หากปลายทางไม่มีสไตล์ code block ให้เอง ให้ห่อด้วยคอนเทนเนอร์ฟอนต์ monospace อีกชั้น
ทำความเข้าใจรหัส Escape ของ ANSI
ถ้าเคยสงสัยว่า [32m มันคืออะไร หัวข้อนี้มีคำตอบ การเข้าใจโครงสร้างของโค้ดเหล่านี้ช่วยให้คุณอ่าน log ดิบได้ และเชื่อมั่นในสิ่งที่ตัวแปลงกำลังทำ
กายวิภาคของ CSI Sequence
Escape sequence ทุกตัวเริ่มด้วยอักขระ ESC (ไบต์ 0x1B) ตามด้วย [ ซึ่งรวมกันเป็นรูปแบบ ESC[...m ที่เห็นกันทั่วไป ส่วน [ เรียกว่า Control Sequence Introducer หรือ CSI ต่อจากนั้นเป็นพารามิเตอร์ตัวเลขคั่นด้วยเซมิโคลอน และจบด้วยไบต์สุดท้ายที่บอกว่าต้องทำอะไร เมื่อไบต์สุดท้ายคือตัวอักษร m sequence นั้นคือโค้ด SGR (Select Graphic Rendition) หรือคำสั่งเปลี่ยนลักษณะข้อความ ดังนั้น [1;32m อ่านว่า "เปิดตัวหนา และตั้งสีตัวอักษรเป็นสีเขียว"
สีพื้นฐาน 8 สีของ SGR
มาตรฐาน ANSI ดั้งเดิมกำหนดสีตัวอักษร 8 สี เลข 30 ถึง 37 ได้แก่ ดำ (30) แดง (31) เขียว (32) เหลือง (33) น้ำเงิน (34) ม่วงแดง (35) ฟ้า (36) และขาว (37) สีพื้นหลังใช้ 40 ถึง 47 เรียงลำดับเดียวกัน ส่วนเฉดสว่างมาทีหลังเป็น 90 ถึง 97 และ 100 ถึง 107 สิบหกค่านี้คือสิ่งที่เครื่องมือรุ่นเก่าส่วนใหญ่ปล่อยออกมา และเป็นเหตุผลที่ธีม terminal แต่ละตัวหน้าตาต่างกัน — ตัวเลขระบุเพียง "ช่อง" ของสีเท่านั้น ส่วนธีมเป็นตัวเติมค่าสีจริงลงไป
ตัวหนา ตัวเอียง ขีดเส้นใต้ และขีดฆ่า
SGR 1 เปิดตัวหนา, 2 ตั้งโทนมืด (dim), 3 เปิดตัวเอียง, 4 ขีดเส้นใต้ และ 9 ขีดฆ่า แต่ละคุณสมบัติมีโค้ดยกเลิกของตัวเอง: 22 ยกเลิกตัวหนาและ dim, 23 ยกเลิกตัวเอียง, 24 ยกเลิกขีดเส้นใต้ และ 29 ยกเลิกขีดฆ่า SGR 0 คือรีเซ็ตหลัก ล้างทุกคุณสมบัติและสีกลับสู่ค่าเริ่มต้น เครื่องมือที่เขียนดีมักปล่อยโค้ดนี้ออกมาตลอดเวลา
ส่วนขยาย 256-Color และ Truecolor
เมื่อแปดสีไม่พอ ส่วนขยาย 256-color เพิ่มรูปแบบ 38;5;n สำหรับสีตัวอักษร และ 48;5;n สำหรับสีพื้นหลัง โดย n เลือกจากพาเลต: 0–15 คือสีมาตรฐานและสีสว่าง, 16–231 เป็นคิวบ์สี 6×6×6 และ 232–255 เป็นช่วงสีเทา Truecolor ไปไกลกว่านั้นด้วย 38;2;r;g;b และ 48;2;r;g;b ที่ระบุค่าแดง เขียว น้ำเงินแยกกันตั้งแต่ 0 ถึง 255 เครื่องมือที่เอาต์พุตรวย เช่น test runner ยุคใหม่ เครื่องมือของ Kubernetes หรือ progress bar สวย ๆ ล้วนพึ่งพารูปแบบเหล่านี้หนักมาก
รหัสรีเซ็ตและค่าเริ่มต้น
Sequence เป็นแบบสะสม เมื่อตั้งสีแล้วสีจะค้างอยู่จนกว่าจะมีอะไรเปลี่ยนมัน นั่นคือเหตุผลที่รีเซ็ตสำคัญ ESC[0m ล้างทุกอย่าง ส่วน ESC[39m และ ESC[49m คืนเฉพาะสีตัวอักษรหรือสีพื้นหลังเริ่มต้น log ที่ไม่เคยรีเซ็ตจะลากสีสุดท้ายไปคลุมทุกบรรทัดถัดไป — พรีวิวแบบสดทำให้เห็นปัญหานี้ได้ทันที
พรีวิวโหมดมืดกับโหมดสว่างต่างกันอย่างไร
Escape code ชุดเดิมอ่านง่ายบนพื้นหลังหนึ่ง แต่มองแทบไม่เห็นบนอีกพื้นหลัง สีเหลืองสว่างชัดเจนบน terminal มืดแต่เกือบมองไม่เห็นบนหน้าวิกิพื้นขาว ส่วนน้ำเงินเข้มกลับตรงข้าม โหมดพรีวิวมืดและสว่างของตัวแปลงช่วยให้คุณเช็กทั้งสองกรณีได้ก่อนวาง HTML ไปยังที่ที่แก้ไม่ได้แล้ว
ตัวอย่างการใช้งานจริง
แชร์ผลลัพธ์ CI ที่มีสีสู่เอกสารและวิกิ
รายงานเหตุการณ์และ runbook ขึ้นอยู่กับความชัดเจนเป็นหลัก ลองแปลง log pipeline ที่พังเป็น HTML แล้ววางลงในเอกสาร incident ผู้ตรวจจะเห็นบรรทัดสีแดงท่ามกลางบรรทัดเขียวนับร้อยได้ทันที โดยไม่ต้องไล่เลื่อนหาปัญหาในข้อความไร้สไตล์ แพลตฟอร์มวิกิที่รับ raw HTML ก็จะแสดงผลลัพธ์ได้อย่างสมบูรณ์
รายงานบั๊กที่ยังคงสีไว้ครบถ้วน
เวลาเปิด issue ให้เครื่องมือ CLI ผู้ดูแลมักขอเอาต์พุตตรงตามจริง บล็อก HTML ที่แปลงแล้วจะเก็บตัวหนา สี และการเน้นของ error ไว้ครบตามที่เครื่องมือตั้งใจ ซึ่งมักตัดคำถามวนซ้ำอย่าง "วางใหม่พร้อมสีได้ไหม" ออกไปได้ทั้งรอบ
เขียนบล็อกแนะนำเครื่องมือ terminal
ถ้าคุณเขียนบทเรียน ภาพหน้าจอ terminal สวยดีแต่ค้นหาไม่ได้และแก้ไขยาก HTML ที่แปลงแล้วทำให้เอาต์พุตตัวอย่างยังเป็นข้อความจริง เลือก คัดลอก แปลภาษา และถูกจัดทำดัชนีได้ ในขณะที่ยังดูเหมือน terminal อยู่เต็มอิ่ม
รักษารูปแบบของบทเรียน CLI ให้เหมือนเดิม
สื่อการสอนและเอกสารอบรมภายในมักอ้างถึง session CLI แบบโต้ตอบที่มี prompt, flag และคำใบ้สีต่าง ๆ การแปลง session log เพียงครั้งเดียวทำให้ผู้อ่านทุกคนเห็นรูปแบบเดียวกัน ไม่ว่าธีม terminal ของเขาจะเป็นแบบใด หรือแม้แต่จะไม่มี terminal เลยก็ตาม
แนวปฏิบัติที่แนะนำ
- วาง log ให้สมบูรณ์ ไม่ใช่แค่บางส่วน — escape sequence กินหลายอักขระ การตัดกลาง sequence ทำให้เกิดสิ่งแปลกประหลาดในผลลัพธ์ ให้รวมตั้งแต่บรรทัดคำสั่งจนถึงรีเซ็ตสุดท้าย
- ลบข้อมูลลับก่อนวาง — การทำงานฝั่งไคลเอนต์หมายถึงความเป็นส่วนตัว แต่ทุกอย่างที่ฝังลงเอกสารอาจถูกส่งต่อได้ ควรลบ token รหัสผ่าน และ hostname ภายในออกจาก log ก่อนเสมอ
- จับคู่พรีวิวกับพื้นหลังปลายทาง — ถ้า HTML จะไปอยู่บนหน้าพื้นสว่าง ให้ตรวจในโหมดสว่าง ส่วน dashboard โทนมืดก็เช็กในโหมดมืด
- เก็บบริบทรอบ error ไว้ — สิบบรรทัดก่อนจุดที่พังมักอธิบายสาเหตุได้ ตัดเสียงรบกวนออกได้ แต่อย่าตัดบริบททิ้ง
- ห่อเอาต์พุตด้วยคอนเทนเนอร์ monospace — หากปลายทางไม่จัดสไตล์ code block ให้เอง ให้เพิ่ม wrapper แบบ pre ด้วยฟอนต์ความกว้างคงที่และเส้นขอบ เพื่อให้การจัดแนวอยู่ครบถ้วน
- เจนใหม่แทนการแก้มือ — ถ้า log เปลี่ยน ให้วางเวอร์ชันใหม่แล้วคัดลอก HTML ใหม่ ดีกว่าการไปแพตช์ผลลัพธ์เก่าทีละจุด
พร้อมให้ผลลัพธ์ terminal เดินทางไปไหนก็สวยงามแล้วหรือยัง เปิด ANSI to HTML Converter วาง log สลับดูพรีวิวมืดและสว่าง แล้วคัดลอก HTML ที่เก็บทุกสีและทุกสไตล์ไว้ครบ — ฟรี ทันที และทำงานในเบราว์เซอร์ของคุณล้วน ๆ
เครื่องมืออื่น ๆ ที่คุณอาจสนใจ:
- ANSI Color Code Generator — สร้างและพรีวิวลำดับสี ANSI สำหรับใช้ในสคริปต์ของคุณเอง
- Log Viewer — ดูและวิเคราะห์ไฟล์ log พร้อมตัวกรองแบบมีโครงสร้าง
- CSV Validator — ตรวจความถูกต้องของโครงสร้างและข้อมูล CSV ก่อนส่งเข้า pipeline
ขอให้สนุกกับการแปลง terminal log เป็น HTML!
คำถามที่พบบ่อย
ถ: ตัวแปลงรองรับ log แบบ truecolor และ 256-color หรือไม่? ตอบ: รองรับครบ เครื่องมือเรนเดอร์สี ตัวหนา ตัวเอียง ขีดเส้นใต้ และขีดฆ่า รวมถึงส่วนขยาย 256-color (38;5;n) และ truecolor (38;2;r;g;b) เอาต์พุตจากเครื่องมือ CLI ยุคใหม่จึงคงเฉดสีเดิมไว้ได้อย่างแม่นยำ
ถ: terminal log ของฉันถูกอัปโหลดขึ้นเซิร์ฟเวอร์หรือไม่? ตอบ: ไม่ ตัวแปลงทำงานฝั่งไคลเอนต์ทั้งหมดในเบราว์เซอร์ของคุณ เนื้อหา log ไม่เคยออกจากเครื่อง จึงปลอดภัยกับผลลัพธ์จากระบบ production และข้อมูลวินิจฉัยที่เป็นความลับ
ถ: ทำไมผลลัพธ์ของฉันดูแปลกในพรีวิวโหมดสว่าง? ตอบ: สี terminal บางเฉดมี contrast ต่ำบนพื้นขาว — สีเหลืองสว่างคือตัวการประจำ ให้เลือกพรีวิวให้ตรงกับหน้าปลายทาง หรือปรับสไตล์คอนเทนเนอร์รอบ ๆ เพื่อให้ข้อความยังอ่านได้ชัดเจน
ถ: นำ HTML ที่ได้ไปวางในเอกสาร Markdown ได้ไหม? ตอบ: ส่วนใหญ่ทำได้ เอนจิน Markdown จำนวนมากรับบล็อก raw HTML ผลลัพธ์ที่แปลงแล้วจึงแสดงได้ตรง ๆ ในวิกิ ไฟล์ README และ static site generator ที่อนุญาต HTML แบบ inline