Sobes.tech
Junior — Middle

Hoe krijg je de laatste tien regels uit een logbestand?

sobes.tech AI

Antwoord van AI

In Go, om de laatste tien regels van een logbestand te krijgen, kun je het bestand regel voor regel lezen en de laatste 10 regels opslaan in een ringbuffer (bijvoorbeeld een vaste grootte slice). Dit is geheugen-efficiënt en vereist niet dat je het hele bestand laadt.

Voorbeeld:

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("Fout:", err)
		return
	}
	for _, line := range lines {
		fmt.Println(line)
	}
}

Deze code leest het bestand regel voor regel en bewaart alleen de laatste 10 regels.