powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Эффективное(быстрое) логирование в файл
25 сообщений из 42, страница 1 из 2
Эффективное(быстрое) логирование в файл
    #39120139
gamedev_12.15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юзаю std::ofstream для логирования.
Собственно, возникает вопрос:
при логировании строки вызывается std::endl, который вызывает flush(), который производит запись на физический диск.
Мне кажется это не очень оптимально. А как правильно? (при условии что потеря логировочных данных не очень критична)
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120161
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это запись в лог - очень даже критично. Процесс повис/рухнул/сняли и ты не в курсе что последнее сделала прога, т.к. буфер умер вместе с процессом.
Даже если не умер - смотришь параллельно лог - действие реально сделано, а в логе не видно, т.к. на диск еще не сбросилось.

ИМХУ flush() после каждой записи в лог обязательно должен быть.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120252
gamedev_12.15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЕсли это запись в лог - очень даже критично. Процесс повис/рухнул/сняли и ты не в курсе что последнее сделала прога, т.к. буфер умер вместе с процессом.
Даже если не умер - смотришь параллельно лог - действие реально сделано, а в логе не видно, т.к. на диск еще не сбросилось.

ИМХУ flush() после каждой записи в лог обязательно должен быть.
зависит от задачи,
у меня задача не в логировании приложения 24/7,
а воткнуть логирование в чужой код чтобы узнать что там происходит(собрать статистику) - увы логирование сильно притормаживает работу и приложение аз-за этого не может нормально работать
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120287
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gamedev_12.15Юзаю std::ofstream для логирования.
Собственно, возникает вопрос:
при логировании строки вызывается std::endl, который вызывает flush(), который производит запись на физический диск.
Мне кажется это не очень оптимально. А как правильно? (при условии что потеря логировочных данных не очень критична)


никто же тебя не заставляет использовать endl.
не нужно тебе - не используй.

кстати именно в логировании наоборот важно делать flush после каждого сообщения.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120462
gamedev_12.15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivgamedev_12.15Юзаю std::ofstream для логирования.
Собственно, возникает вопрос:
при логировании строки вызывается std::endl, который вызывает flush(), который производит запись на физический диск.
Мне кажется это не очень оптимально. А как правильно? (при условии что потеря логировочных данных не очень критична)


никто же тебя не заставляет использовать endl.
не нужно тебе - не используй.

кстати именно в логировании наоборот важно делать flush после каждого сообщения.
(потеря последних запискей в логе для меня не критична)

1)Насколько существенным будет прирост производительности если не использовать flush() для каждой строки?
2)Как часто нужно его использовать чтобы не потерять в производительности?
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120467
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gamedev_12.15,

замени endl на "\n" и затести. Будет быстрее.

Если поток закрывается корректно - в итоге все будет на диске.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120474
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1)Насколько существенным будет прирост производительности если не использовать flush() для каждой строки?


Это зависит от средней длины твоей записи и соотношения этой длины с размером буфера в CRT и файловой системе.
Соотношения их длин даст примерный коэффициент ускорения.


автор2)Как часто нужно его использовать чтобы не потерять в производительности?


std::endl ?
Вообще не использовать, если тебе не нужна непосредственная запись единицы лога в файл (что довольно странно, но допустимо),
то не используй std::endl вообще.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120617
gamedev_12.15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivавтор1)Насколько существенным будет прирост производительности если не использовать flush() для каждой строки?


Это зависит от средней длины твоей записи и соотношения этой длины с размером буфера в CRT и файловой системе.
Соотношения их длин даст примерный коэффициент ускорения.


автор2)Как часто нужно его использовать чтобы не потерять в производительности?


std::endl ?
Вообще не использовать, если тебе не нужна непосредственная запись единицы лога в файл (что довольно странно, но допустимо),
то не используй std::endl вообще.
ok,
если не использовать flush() запись в файл будет только закрытии файла и при переполнении CRT буфера.
Тогда во сколько раз время записи на диск полного CRT буфера может отличаться от flush() для строки?(при исп. OS:windows msvc2008)
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120631
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gamedev_12.15Тогда во сколько раз время записи на диск полного CRT буфера может отличаться от flush() для строки?(при исп. OS:windows msvc2008)

Может отличаться только в 1 раз.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120681
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gamedev_12.15ok,
если не использовать flush() запись в файл будет только закрытии файла и при переполнении CRT буфера.
Тогда во сколько раз время записи на диск полного CRT буфера может отличаться от flush() для строки?(при исп. OS:windows msvc2008)
Какой размер буфера и от чего он зависит - ХЗ.
Какой размер строки - тебе виднее.

Затести:
1. Размер буфера: пиши блоки по килобайту одновременно в консоль пиши размер отправленного в поток, снимай задачу и сравнивай что в консоле и что на диске.
2. Скорость записи: запиши гиг с flush() и без.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120689
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты задаешь вопросы, на которые можно ответить только тестами реальной системы.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120893
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли это запись в лог - очень даже критичноВ морг.Процесс повис/рухнул/сняли и ты не в курсе что последнее сделала прога, т.к. буфер умер вместе с процессом.Вот когда действительно потребуется логирование предсмертных конвульсий - тогда и надо думать, как затормозить работу.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120895
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivкстати именно в логировании наоборот важно делать flush после каждого сообщения.Ещё один ...
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120949
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВот когда действительно потребуется логирование предсмертных конвульсий - тогда и надо думать, как затормозить работу.
Когда конвульсии начинаются - уже нет времени думать, надо пациента воскрешать.

Чтоб не тормозило - не засирай логи чем попало. Если сотня строк в минуту пройдет - ничего не затормозится. Для подробностей - предусмотри режим отладки - пиши каждый чих, пусть тормозит, будет повод отключить.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120956
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, как бы, несколько лет администрировал систему, где режим отладочных логов был чаще включен, чем выключен.
Была масса ошибок и аварийных ситуаций, включая фатальные, но не разу не возникло вопроса: "А что было за секунду до падения???".
А вот вопросов: "Когда же, блин, началась-то эта фигня и что вообще происходит?" - выше крыши.
Ситуаций, когда разбирался даже не активный лог, а архивный - множество.
И никогда не мешало, что логи пишутся поблочно, а не построчно.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120969
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тех случаях, когда приложение реально падает - просят не логи, а дампы. И это не гипотеза.
А ваши рассуждения очень похожи на рекомендации гонщика формулы-раз механику питстопа.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120974
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЯ, как бы, несколько лет администрировал систему, где режим отладочных логов был чаще включен, чем выключен.
Была масса ошибок и аварийных ситуаций, включая фатальные, но не разу не возникло вопроса: "А что было за секунду до падения???".
Это проблема того что пишут в логи, а не подхода как писать логи. К разработчику хоть раз обращался?

Лично я пишу в логи самое-самое важное. Мою систему администрируют посторонние админы. Все живет в полном автомате. Чего там у них происходит я понятия не имею. Происходит все: от кривых рук до кривого железа. Если ко мне (разработчику) обращается админ с какой-то проблемой, то первое что я прошу - логи. Фатальные проблемы крайне редки, там где они учащаются - включаем отладку. По итогу разбора какие-то отладочные записи переходят в самое-самое, т.е. пишутся всегда. В итоге в 99% случаев по просмотру лога я всегда ставлю правильный диагноз.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39120990
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЭто проблема того что пишут в логи, а не подхода как писать логи. К разработчику хоть раз обращался?Когда в системе работает две-две с половиной сотни пользователей, событий будет много и подход "не пиши лишнего" перестаёт работать.
Но ваше "лог надо писать построчно" - заблуждение и глупость. И от объёмов протоколирования это не зависит.

P.S. К разработчикам я, конечно, обращался и то, что я говорю - не теория, а вполне себе практический опыт.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121005
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвполне себе практический опыт.
Вот теперь понятно. Опыт разный т.к. задачи разные. У тебя система с пользователями, у меня автомат, который должен работать нисмотря ни на что. У тебя система упала - тутже пользователи закипишили. У меня упала - никто не заметил, через 1-3 часа юзеры начинают подозревать неладное (не видя моих результатов в своей системе), пинают админа, он быстро реанимирует (если получится, обычно получается) и ко мне - что это было? За что я огреб? Что сделать чтоб этого больше не было? И тут я ему должен убедительно ответить что было. А если он пока реанимировал снимал задачи, ребутил и т.п. то я должен это знать.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121039
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорость чтения рядового человека 100-200 слов в минуту. Какой смысл писать гигабайты логов если они не смогут быть прочитаны?
Для гигабайтов есть БД, такие логи лучше писать туда с мало-мальской формализацией, чтобы потом фильтровать можно было под 100-200 слов в минуту.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121053
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TУ меня упала - никто не заметил, через 1-3 часа юзеры начинают подозревать неладное (не видя моих результатов в своей системе), пинают админа, он быстро реанимирует (если получится, обычно получается) и ко мне - что это было? За что я огреб? Что сделать чтоб этого больше не было?Аникейщик это а не админ.
Если человек не вчера начал работать, то о проблемах он должен знать раньше пользователей. Хотя бы для того, чтобы не огребаться. И логи разбирать - прямая его обязанность.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121058
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКакой смысл писать гигабайты логов если они не смогут быть прочитаны?
grep на что?
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121061
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovАникейщик это а не админ.
Если человек не вчера начал работать, то о проблемах он должен знать раньше пользователей. Хотя бы для того, чтобы не огребаться. И логи разбирать - прямая его обязанность.
Согласен, только презумпция невиновности в его пользу. Начнись разбор проблемы на уровне начальства - крайний я. Потому что он в штате, а я просто поставщик услуги, обещающий конкретные параметры в договоре.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121219
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexy_blackты задаешь вопросы, на которые можно ответить только тестами реальной системы.

да нет, примерно можно прикинуть и теоретически...
размеры буфера обычно сейчас 8 или 16 КБ,
размер строки - 100-200 символов, далее с учетом кодировки можно все посчитать, примерно, конечно...
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121221
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Basil A. Sidorov]Dima TЕсли это запись в лог - очень даже критичноВ морг.[quot ]

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

ему бы конечно профайлер больше помог бы...
OProfile например почти не тормозит...
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Эффективное(быстрое) логирование в файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]