Junior — Middle
Kuidas saada logifaili viimased kümme rida?
sobes.tech AI
Vastus AI-lt
Go keeles, et saada logifaili viimased kümme rida, saate faili lugeda rida kaupa ja salvestada viimased 10 rida ringbuferisse (näiteks fikseeritud suurusega viil). See on mälu kasutamise poolest tõhus ning ei nõua kogu faili laadimist.
Näide:
package main
import (
"bufio"
"fmt"
"os"
)
func tail(filename string, n int) ([]string, error) {
file, err := os.Open(filename)
if err != nil {
return nil, err
}
defer file.Close()
lines := make([]string, 0, n)
scanner := bufio.NewScanner(file)
for scanner.Scan() {
if len(lines) == n {
lines = lines[1:]
}
lines = append(lines, scanner.Text())
}
if err := scanner.Err(); err != nil {
return nil, err
}
return lines, nil
}
func main() {
lines, err := tail("logfile.log", 10)
if err != nil {
fmt.Println("Viga:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
See kood loeb faili rida kaupa ja hoiab ainult viimased 10 rida.