Sarymian
@Sarymian
Программист-сисадмин

Не идёт запись в файл. В чём проблема?

Добрый день.

Пытаюсь подружиться с журналированием, не особо получается:
import (
"log"
)
/*******************/
type Client struct {
	Logger        *log.Logger
}

ex, _ := os.Executable()
	path := filepath.Dir(ex)
	pathlog := path + string(filepath.Separator) + "log" + string(filepath.Separator)
	if _, err := os.Stat(pathlog); os.IsNotExist(err) {
		_ = os.MkdirAll(pathlog, os.ModePerm)
	}
	f, err := os.OpenFile(pathlog + time.Now().Format("02-01-2006_15-04-05") +".log", os.O_CREATE,0777)
	if err != nil {
		panic(err)
	}
	defer f.Close()

	//f.Sync()

	client.Logger = log.New(bufio.NewWriter(f), version, log.Lshortfile)
	client.Logger.Print("Test text")


Директория создаётся, если её нет. Файл создаётся. НО! в файл ни чего не записывается.
В чём причина?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
tumbler
@tumbler
бекенд-разработчик на python
bufio.NewWriter(f)
Вот эта штука буферизует запись на диск, ее надо флашить отдельно от самого файла. Без этой обертки (New(f, ...)) в лог запись идет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@PapaStifflera
Родился, вырос...
Могу предположить, что вот в этом: bufio.NewWriter(f).
Либо делайте Flush(), либо используйте небуферизованный io.Writer.
w := bufio.NewWriter(f)
defer w.Flush()
client.Logger = log.New(w, version, log.Lshortfile)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы