Sobes.tech
Junior — Middle

როგორ მივიღოთ ლოგის ფაილის ბოლო ათ ხაზი?

sobes.tech AI

პასუხი AI-სგან

Go ენის გამოყენებით, რომ მიიღოთ ბოლო ათი ხაზი ლოგის ფაილიდან, შეგიძლიათ წაიკითხოთ ფაილი ხაზი ხაზი და შეინახოთ ბოლო 10 ხაზი ციკლური ბუფერში (მაგალითად, ფიქსირებული ზომის სლაიში). ეს ეფექტურია მეხსიერებისთვის და არ საჭიროებს მთლიანი ფაილის ჩატვირთვას.

მაგალითი:

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("შეცდომა:", err)
		return
	}
	for _, line := range lines {
		fmt.Println(line)
	}
}

ამ კოდი კითხულობს ფაილს ხაზი ხაზი და ინახავს მხოლოდ ბოლო 10 ხაზი.