Go:
การบันทึกล็อก

วิธีการ:

ใน Go, logging สามารถทำได้โดยใช้แพคเกจมาตรฐาน log แพคเกจนี้มอบความสามารถในการ logging ที่เรียบง่าย เช่น การเขียนไปยัง standard output หรือไฟล์ ลองเริ่มด้วยตัวอย่างพื้นฐานของการ logging ไปยัง standard output:

package main

import (
	"log"
)

func main() {
	log.Println("This is a basic log entry.")
}

ผลลัพธ์:

2009/11/10 23:00:00 This is a basic log entry.

Timestamp ที่ต้นของ log entry จะถูกเพิ่มโดยอัตโนมัติโดยแพคเกจ log ถัดไป ลองดูการ log ไปยังไฟล์แทนการเขียนออกมาที่ standard output:

package main

import (
	"log"
	"os"
)

func main() {
	file, err := os.OpenFile("app.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	log.SetOutput(file)
	log.Println("This log entry goes to a file.")
}

ตอนนี้ ลองทำตัวอย่างเคสที่ซับซ้อนกว่า: การปรับแต่งรูปแบบของการ logging Go ช่วยให้คุณสร้าง custom logger ด้วย log.New():

package main

import (
	"log"
	"os"
)

func main() {
	logger := log.New(os.Stdout, "CUSTOM LOG: ", log.Ldate|log.Ltime|log.Lshortfile)
	logger.Println("This is a custom log message.")
}

ผลลัพธ์:

CUSTOM LOG: 2009/11/10 23:00:00 main.go:11: This is a custom log message.

ตัวอย่างนี้จะเติมข้อความ “CUSTOM LOG: " บนทุกข้อความ log และรวมวันที่ เวลา และตำแหน่งไฟล์ต้นฉบับ

การดำดิ่งลึก

แพคเกจ log ของไลบรารีมาตรฐานของ Go มีความเรียบง่ายและเพียงพอสำหรับแอปพลิเคชันมากมาย แต่ก็ขาดคุณสมบัติที่ซับซ้อนยิ่งขึ้นที่พบในไลบรารีคอลเลกชันการ logging ของบุคคลที่สาม เช่น structured logging, log rotation และระดับการ logging แพคเกจเช่น zap และ logrus นำเสนอคุณสมบัติขั้นสูงเหล่านี้และเป็นที่ยอมรับในชุมชน Go สำหรับประสิทธิภาพและความยืดหยุ่นของพวกเขา

ตัวอย่างเช่น structured logging ช่วยให้คุณบันทึกข้อมูลในรูปแบบที่มีโครงสร้าง (เช่น JSON) ซึ่งมีประโยชน์โดยเฉพาะสำหรับแอปพลิเคชันที่อยู่บนคลาวด์สมัยใหม่ ที่อาจมีการวิเคราะห์โดยเครื่องมือหรือบริการต่างๆ zap โดยเฉพาะเป็นที่รู้จักสำหรับประสิทธิภาพที่สูงและ overhead ที่ต่ำของการจัดสรร ทำให้เหมาะกับแอปพลิเคชันที่ความเร็วและความมีประสิทธิภาพเป็นสิ่งสำคัญ

จากอดีตถึงปัจจุบัน logging ใน Go ได้พัฒนาอย่างมากตั้งแต่เริ่มต้นใช้ภาษา รุ่นแรกของ Go มอบความสามารถในการ logging พื้นฐานที่เราเห็นในแพคเกจ log อย่างไรก็ตาม เมื่อภาษาเติบโตในความนิยมและความซับซ้อนของแอปพลิเคชันที่เขียนด้วย Go เพิ่มขึ้น ชุมชนจึงเริ่มพัฒนาไลบรารี logging ที่ซับซ้อนขึ้นเพื่อตอบสนองความต้องการของพวกเขา ในวันนี้ แม้ว่าแพคเกจ log มาตรฐานยังคงเป็นตัวเลือกที่ดีสำหรับแอปพลิเคชันที่เรียบง่าย แต่หลายนักพัฒนาเทิร์นหันมาใช้โซลูชั่นของบุคคลที่สามสำหรับความต้องการการ logging ที่ซับซ้อนกว่า