Как в golang можно реализовать постоянно чтение файла?

Рейтинг: 0Ответов: 1Опубликовано: 07.06.2023

Как можно реализовать следующее? Имеется текстовый файл, время от времени в него добавляется информация из стороннего сервиса. Мне нужно постоянно считывать данный файл и по мере того, как в него добавляются новые строки - выводить эти новые строки в консоль

Ответы

▲ 3Принят

Добрые люди уже написали библиотеку, которая следит за обновлениями в файле. Есть пример, как печатать новые строки из файла

Я проверил - работает

package main

import (
    "fmt"

    "github.com/nxadm/tail"
)

var logFile = "log.log"

func main() {
    t, err := tail.TailFile(logFile, tail.Config{Follow: true})
    if err != nil {
        panic(err)
    }

    for line := range t.Lines {
        fmt.Println(line.Text)
    }
}

Этот пример прикрепляется к файлу log.log и читает оттуда новые строки. Я написал скрипт, который раз в секунду пишет в log.log новую строку

cnt=0;while true; do echo $(( ++cnt )); date >> log.log; sleep 1; done

Вот вывод программы

...
Thu Jun  8 01:42:13 KST 2023
Thu Jun  8 01:42:14 KST 2023
Thu Jun  8 01:42:15 KST 2023
Thu Jun  8 01:42:16 KST 2023
Thu Jun  8 01:42:17 KST 2023
Thu Jun  8 01:42:18 KST 2023
Thu Jun  8 01:42:19 KST 2023
Thu Jun  8 01:42:20 KST 2023
Thu Jun  8 01:42:21 KST 2023
Thu Jun  8 01:42:22 KST 2023
...

Пример не останавливается, исправно печатает новые строки.