เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง
การบันทึกที่เครื่องอ่านได้
เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
บันทึกที่เครื่องอ่านได้
บันทึกแบบดั้งเดิมเป็นสตริงอิสระ: "user 42 logged in from 1.2.3.4" มนุษย์อ่านได้ง่าย แต่เครื่องมือสืบค้นจัดการได้ยาก การบันทึกแบบมีโครงสร้าง จะส่งออกคู่คีย์-ค่า ทำให้ระบบรวบรวมบันทึกสามารถกรองและรวมข้อมูลได้อย่างน่าเชื่อถือ
ปัญหาของบันทึกแบบสตริง
การวิเคราะห์ข้อความอิสระมีความเปราะบาง:
- รูปแบบเปลี่ยนแปลงไปตามเวลา
- นิพจน์ปกติทำงานผิดพลาดกับกรณีสุดขอบ
- คุณไม่สามารถถามได้ง่าย ๆ ว่า "เหตุการณ์ทั้งหมดที่ userID=42 อยู่ที่ใด"
บันทึกแบบมีโครงสร้างทำให้ทุกฟิลด์เป็นแอตทริบิวต์สำคัญที่สืบค้นได้
slog อยู่ในไลบรารีมาตรฐาน
ตั้งแต่ Go 1.21 เป็นต้นมา การบันทึกแบบมีโครงสร้างอยู่ในแพ็กเกจไลบรารีมาตรฐาน log/slog โดยไม่ต้องใช้ส่วนเสริมภายนอก
import "log/slog"บันทึกแบบมีโครงสร้างครั้งแรกของคุณ
การเรียกใช้ที่ง่ายที่สุดจะบันทึกข้อความพร้อมแอตทริบิวต์แบบคีย์-ค่า:
package main
import "log/slog"
func main() {
slog.Info("user logged in", "userID", 42, "ip", "1.2.3.4")
}การอ่านเอาต์พุต
ตัวจัดการเริ่มต้นจะแสดงผลประมาณนี้:
2009/11/10 23:00:00 INFO user logged in userID=42 ip=1.2.3.4
แอตทริบิวต์แต่ละรายการเป็นคู่ key=value แยกจากกัน พร้อมให้เครื่องวิเคราะห์
ระดับที่มีมาให้ในตัว
slog มีมาให้สี่ระดับ: Debug, Info, Warn, Error แต่ละระดับรับข้อความและแอตทริบิวต์แบบคีย์-ค่าที่เรียงสลับกัน
slog.Warn("disk almost full", "freePct", 5)
slog.Error("db connection failed", "attempt", 3)คู่คีย์-ค่า
ส่งแอตทริบิวต์เป็นอาร์กิวเมนต์สลับกัน: คีย์, ค่า, คีย์, ค่า หากมีอาร์กิวเมนต์เดี่ยวที่เกินมา ระบบจะบันทึกพร้อมเครื่องหมายพิเศษ !BADKEY ดังนั้นโปรดส่งเป็นคู่เสมอ
slog.Info("order placed", "orderID", 1001, "total", 49.99)JSON สำหรับการใช้งานจริง
ในการใช้งานจริง โดยทั่วไปคุณจะส่งออก JSON เพื่อให้เครื่องมือส่งต่อบันทึก (Loki, ELK, CloudWatch) สร้างดัชนีให้ฟิลด์ได้โดยอัตโนมัติ slog มีตัวจัดการ JSON สำหรับกรณีนี้โดยเฉพาะ ซึ่งจะกล่าวถึงในบทเรียนถัดไป
เปรียบเทียบกับแพ็กเกจ log แบบเดิม
แพ็กเกจ log แบบดั้งเดิมทำได้เพียงพิมพ์สตริง ส่วน slog ยังคงใช้งานได้คุ้นเคย แต่เพิ่มโครงสร้าง ระดับ และตัวจัดการที่เปลี่ยนสลับได้ โดยไม่ต้องเปลี่ยนโค้ดทั้งระบบในครั้งเดียว
เมื่อโครงสร้างให้ประโยชน์
การบันทึกแบบมีโครงสร้างให้ประโยชน์มากที่สุดเมื่อ:
- คุณรวมบันทึกจากบริการจำนวนมากไว้ที่ศูนย์กลาง
- คุณสร้างแดชบอร์ดและการแจ้งเตือนจากฟิลด์ต่าง ๆ
- คุณต้องเชื่อมโยงคำขอด้วย ID
เรียกใช้ได้: เอาต์พุตแบบมีโครงสร้าง
เรียกใช้โปรแกรมนี้เพื่อดูแอตทริบิวต์แบบมีโครงสร้างในเอาต์พุตเริ่มต้น
package main
import "log/slog"
func main() {
slog.Info("request handled",
"method", "GET",
"path", "/health",
"status", 200,
"ms", 12,
)
}ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจของคุณเกี่ยวกับการบันทึกแบบมีโครงสร้าง
สรุป
คุณได้เรียนรู้ว่าเหตุใดบันทึกแบบมีโครงสร้างจึงสำคัญ:
- แอตทริบิวต์แบบคีย์-ค่าสามารถให้เครื่องสืบค้นได้
log/slogอยู่ในไลบรารีมาตรฐาน (Go 1.21 ขึ้นไป)- ระดับที่มีมาให้ในตัว: Debug, Info, Warn, Error
- ส่งแอตทริบิวต์เป็นคู่คีย์และค่าที่เรียงสลับกัน
ถัดไป: การเลือกตัวจัดการแบบข้อความหรือ JSON
คำถามที่พบบ่อย
บทเรียน “เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง”
การบันทึกที่เครื่องอ่านได้ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุผลที่ใช้บันทึกแบบมีโครงสร้าง
- ตัวจัดการ slog
- ระดับและแอตทริบิวต์ของบันทึก
- ตัวจัดการแบบกำหนดเอง