Должны ли потоки файлов журнала открываться / закрываться при каждой записи или оставаться открытыми в течение срока службы приложения для настольного компьютера? - PullRequest
34 голосов
/ 02 октября 2008

Должны ли классы журналов открывать / закрывать поток файлов журнала при каждой записи в файл журнала или он должен сохранять поток файлов журнала открытым в течение всего времени жизни приложения до тех пор, пока не будет завершена вся регистрация?

Я спрашиваю в контексте настольного приложения. Я видел, как люди делали это в обоих направлениях, и мне было интересно, какой подход дает наилучшие всесторонние результаты для логгера.

Ответы [ 13 ]

0 голосов
/ 02 октября 2008

Я бы открывал и закрывал при каждой записи (или пакет записей). Если это приводит к проблемам с производительностью в настольном приложении, возможно, вы слишком часто пишете в файл журнала (хотя я уверен, что для большого количества записей могут быть веские причины).

0 голосов
/ 02 октября 2008

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

0 голосов
/ 02 октября 2008

Преимущество закрытия файла каждый раз заключается в том, что ОС гарантирует, что новое сообщение будет записано на диск. Если вы оставите файл открытым, и ваша программа потерпит крах, вполне возможно, что не все будет написано. Вы также можете сделать то же самое, выполнив fflush () или любой другой эквивалент в языке, который вы используете.

...