Rumah >pembangunan bahagian belakang >Golang >Bagaimana Cara Membaca Dua Baris Terakhir Fail Log Besar dalam Go Setiap 10 Saat dengan Cekap?

Bagaimana Cara Membaca Dua Baris Terakhir Fail Log Besar dalam Go Setiap 10 Saat dengan Cekap?

DDD
DDDasal
2024-11-07 18:02:03649semak imbas

How to Efficiently Read the Last Two Lines of a Large Log File in Go Every 10 Seconds?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn