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 տողերը։