Sobes.tech
Junior — Middle

Bir günlük dosyasının son on satırını nasıl alabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, bir log dosyasının son on satırını almak için dosyayı satır satır okuyabilir ve son 10 satırı döngüsel tamponda (örneğin, sabit boyutlu bir dilim) saklayabilirsiniz. Bu, bellek açısından etkilidir ve tüm dosyayı yüklemeyi gerektirmez.

Örnek:

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

Bu kod, dosyayı satır satır okur ve sadece son 10 satırı saklar.