Membaca Baris Terakhir daripada Fail Log Besar dalam Pergi Setiap 10 Saat
Apabila berurusan dengan fail log yang besar, menjadi penting untuk merangka kaedah yang cekap untuk memantau dan menganalisis data terkini tanpa membebankan memori. Artikel ini menangani cabaran ini dengan membincangkan pendekatan untuk membaca dua baris terakhir fail log setiap 10 saat menggunakan Go.
Untuk bermula, kami menggunakan fungsi pemasa (masa. Tandakan) dikonfigurasikan untuk mencetuskan setiap 10 saat. Dalam fungsi ini, fungsi readFile digunakan untuk meminta baris terkini daripada fail log.
Untuk menentukan titik permulaan membaca baris terakhir, kami menggunakan (os .Fail).Kaedah stat untuk mendapatkan semula saiz fail. Dengan mengandaikan bahawa setiap baris menjangkau kira-kira 32 bait, kami mengira kedudukan mula sebagai saiz fail - 62* (untuk dua baris terakhir).
Berikut ialah contoh berdasarkan andaian kami:
package main import ( "fmt" "os" "time" ) const MYFILE = "logfile.log" func main() { c := time.Tick(10 * time.Second) for now := range c { readFile(MYFILE) } } func readFile(fname string) { file, err := os.Open(fname) if err != nil { panic(err) } defer file.Close() buf := make([]byte, 62) stat, statErr := file.Stat() if statErr != nil { panic(statErr) } start := stat.Size() - 62 _, err = file.ReadAt(buf, start) if err == nil { fmt.Printf("%s\n", buf) } }
Penyelesaian ini dengan cekap mengambil semula dua baris terakhir fail log tanpa memuatkannya ke dalam memori sepenuhnya, memastikan pemantauan cekap fail log besar dalam masa nyata.
Atas ialah kandungan terperinci Bagaimana Cara Membaca Dua Baris Terakhir Fail Log Besar dalam Go Setiap 10 Saat dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!