Junior — Middle
Wie kann man die letzten zehn Zeilen einer Logdatei erhalten?
sobes.tech KI
Antwort von AI
In Go, um die letzten zehn Zeilen einer Logdatei zu erhalten, kann man die Datei Zeile für Zeile lesen und die letzten 10 Zeilen in einem ringpuffer (z.B. einem Slice fester Größe) speichern. Dies ist speichereffizient und erfordert nicht das Laden der gesamten Datei.
Beispiel:
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("Fehler:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
Dieses Programm liest die Datei Zeile für Zeile und speichert nur die letzten 10 Zeilen.