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 ხაზი.