Добрые люди уже написали библиотеку, которая следит за обновлениями в файле. Есть пример, как печатать новые строки из файла
Я проверил - работает
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
...
Пример не останавливается, исправно печатает новые строки.