текстовых строк в файл
Она вызывает
fmt.Fprintf(s.Writer, "%v\n", message)
,где message обычная строка состоящая из 30~80 символов, а s.Writer является выходным файлом.
Это происходит в цикле, в программу поступают данные, она их обрабатывает и должна записывать построчно в файл,.
Но получается, что последняя строка постоянно неполная, т.е. может записать 5 символов или 3 или 10, но не как должно быть 30~80.
Когда поступают новые данные эта строка конечно дописывается до нормальной длины и данные не пропадают, но при некорректном завершении программы строка не дописывается и остаётся той длинны что была записана сначала "5 символов или 3 или 10, но не как должно быть 30~80". Данные при этом теряются.
Что я делаю не так или как это можно исключить?
Попробуйте дёрнуть https://golang.org/pkg/os/#File.Sync (или Close) перед выходом
printf медленный, лучше напрямую байты писать
Попробовал - не помогло, так же часть строки только записывается.
Вы закрываете файл на выходе из программы?
sync, проблема в нем, скорее всего. при аварийном завершении надо вызватьи и закрыть файл
при закрытии и так будет sync
а может вам в логи попробовать печатать содержимое message?
Уже пробовал. через logrus, выдаёт полное содержание, а fmt.Print(или fmt.Sprint) - опять только часть
так а какой тип у message?
Странно, но кавычки не закрыты. Т.е. буфер не сброшен.
Обсуждают сегодня