Junior — Middle
¿Cómo se pueden obtener las últimas diez líneas de un archivo de registro?
sobes.tech AI
Respuesta de la IA
En Go, para obtener las últimas diez líneas de un archivo de registro, se puede leer el archivo línea por línea y guardar las últimas 10 líneas en un búfer circular (por ejemplo, un slice de tamaño fijo). Esto es eficiente en memoria y no requiere cargar todo el archivo.
Ejemplo:
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("Error:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
Este código lee el archivo línea por línea, guardando solo las últimas 10 líneas.