Junior — Middle
Comment obtenir les dix dernières lignes d'un fichier journal?
sobes.tech IA
Réponse de l'IA
En Go, pour obtenir les dix dernières lignes d'un fichier journal, vous pouvez lire le fichier ligne par ligne et stocker les dix dernières lignes dans un tampon circulaire (par exemple, une tranche de taille fixe). C'est efficace en mémoire et ne nécessite pas de charger tout le fichier.
Exemple:
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("Erreur:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
Ce code lit le fichier ligne par ligne, ne conservant que les dix dernières lignes.