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

DDD
Lepaskan: 2024-11-07 18:02:03
asal
564 orang telah melayarinya

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)
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!