powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Эффективное(быстрое) логирование в файл
42 сообщений из 42, показаны все 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
Эффективное(быстрое) логирование в файл
    #39121260
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно взять за правило flush-ить только важные события (ERROR,FATAL) или события от особого логера.
Таковых должно быть (наобум) 1-5% от всех остальных. А остальной трафик ... ну пускай течёт в фоне.
По мере возможности.

Или взять к примеру ОС. Она вобщем-то не логгирует свои "ядерные" события. И ЕМНИП техподдержка
анализирует "посметрные дампы" memory. Это тоже вобщем-то метод. И экономно. И из поля зрения
ничто не утекает.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121301
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСогласен, только презумпция невиновности в его пользу.Если есть косяк админа - он должен получать люлей. Чтобы нюх не терял.
Именно поэтому админ должен знать больше, чем ему положено по должностным обязанностям.Начнись разбор проблемы на уровне начальства - крайний я.Это вообще не техническая проблема и лично я не вижу смысла обсуждать общие вопросы там, где каждый случай содержит частные ньюансы.Потому что он в штате, а я просто поставщик услуги, обещающий конкретные параметры в договоре.И это то же не техническая проблема.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИли взять к примеру ОС. Она вобщем-то не логгирует свои "ядерные" события. И ЕМНИП техподдержка
анализирует "посметрные дампы" memory. Это тоже вобщем-то метод. И экономно. И из поля зрения
ничто не утекает.
Чтобы с этих дампов что-то понять надо как минимум асм знать хорошо, инструментарий соответствующий освоить. Совсем не свойственные знания для прикладного программиста.
Да и в дампах думаю не все гладко: если компилятор при сборке релиза осмысленные имена функций и переменных выкинул, половину кода заинлайнил, причем там в перемешку и твой код, и STL и т.д. и т.п. Как это читать? ХЗ.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39121454
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

это крайние случаи. Админы (большинство) адекватные и грамотные. Из частого (опять же в моей практике) не падение, а "зависание". Тот же админ пишет/звонит: "Прога молотит уже 20-30 минут, проц на 100% грузит. Что делать?" Смотрим лог и сразу все понятно: из его системы (где он тоже только админ) вывалилось что-то большое и обрабатывается, тут снять задачу вообще не вариант - обработка начнется с начала. Без flush() запись о том что конкретно обрабатывается висела бы в буфере, а мы бы с админом судорожно гадали что случилось.

ИМХУ в этом вопросе нет одного правильного ответа на все случае жизни. Не надо тебе - не пользуй flush(). Если логи не читаешь, то вообще не пиши,так еще эффективнее работать будет.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39122827
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТот же админ пишет/звонит: "Прога молотит уже 20-30 минут, проц на 100% грузит. Что делать?" Смотрим лог и сразу все понятно: из его системы (где он тоже только админ) вывалилось что-то большое и обрабатываетсяЕсли человек не вчера работает, то он должен знать или, как минимум, представлять что и когда может "свалиться".
И потом - что за паника? "А-а-а! Усё пропало! Полчаса стопроцентной загрузки!" - где трагедия?
Ну и самое главное: если вы, заглянул в лог, поняли, что происходит, то я вижу только одну причину, по которой этого не понял админ - он вообще не заглядывал в лог.Без flush() запись о том что конкретно обрабатывается висела бы в буфереВремена Windows 9x, которая могла сутками держать данные в буфере - давно прошли.
Максимум, который вы получите при отсутствии flush - секунды (десятки секунд) отложенной записи.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123053
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВремена Windows 9x, которая могла сутками держать данные в буфере - давно прошли.
Максимум, который вы получите при отсутствии flush - секунды (десятки секунд) отложенной записи.
Тестами не подтверждается.
Исходник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#include <fstream>
#include <iostream>
#include <windows.h>

void test_log(const char* filename)
{
	std::ofstream ofs(filename, std::ofstream::out);
	int cnt = 0;
	while(1) {
		cnt++;
		ofs << cnt << ". 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\n";
		std::cout <<  cnt << "\r";
		Sleep(10000);
	}
}

int main(int argc, char* argv[])
{
	test_log("test.log");
	return 0;
}


Компилировал MSVC 2012 Express. Запускал на W7. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. Т.е. по наполнению. Какой-то ИИ не наблюдается.
Можно паузу побольше поставить - будет раз в сутки писать.
Единственное полезное: при закрытии окна крестиком - скидывает весь буфер. Если с диспетчера снимать задачу - не скидывает.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123073
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем в 99% случаев можно не париться с флашами.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123157
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivalexy_blackты задаешь вопросы, на которые можно ответить только тестами реальной системы.
да нет, примерно можно прикинуть и теоретически... ...

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

даже если например снизить время записи в лог, то в последствии может оказаться, что на это приходится только 0.01% верени работы системы. а, скажем, 38% она просиживает в какой-то функции. вот если оптимизировать эту функцию, в которой 38%, то это даст реальный плюс, даже если она от этого станет быстрее очень не на много, суммарный эффект будет больше, чем у лога..
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123178
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TBasil A. SidorovВремена Windows 9x, которая могла сутками держать данные в буфере - давно прошли.
Максимум, который вы получите при отсутствии flush - секунды (десятки секунд) отложенной записи.
Тестами не подтверждается.
Код: plaintext
1.
std::ofstream




Процитированное утверждение - про дисковые буферы ОС, а не про буфер потока, который естественно сам по себе не сбрасывается на диск, потому что это просто участок памяти процесса, и все действия над ним происходят во время операций над потоком, а никак не в фоне.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123515
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКомпилировал MSVC 2012 Express. Запускал на W7. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. Т.е. по наполнению.Как мониторили?
Код: plaintext
type файл > nul
ничего не меняет?
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123521
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123558
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovDima TКомпилировал MSVC 2012 Express. Запускал на W7. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. Т.е. по наполнению.Как мониторили?
Код: plaintext
type файл > nul
ничего не меняет?
Как обычно, в фаре F3 на файле лога. Можно любую другую смотрелку логов использовать.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123604
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для надёжности я-бы сравнил работу просмотрщика FAR с утилитой tail.exe
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123636
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКак обычно, в фаре F3 на файле лога. Можно любую другую смотрелку логов использовать.Могу и ошибаться, но если "смотрелка логов" использует Directory Change Notifications , то ваш пример проходит по сценарию "данные пишутся, но метаданные (каталожные записи) не обновляются". Проверяется тем самым "type > nul".
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123701
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати поведение Far при переходе от Win2003 к Windows7 изменилось в части наблюдения
за directory list. В старой версии размеры файлов обновлялись динамически (очевидно
по нотификациям от directory change). В семёрке эти нотификации толи исчезли совмем
толи стали отложенные.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123739
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не настаиваю на фаре. Просто я привык смотреть логи фаром и он показывает сразу после появления записи на диске.
Можно брать любой другой инструмент вызывающий доверие. Например
Код: plaintext
1.
type test.log


а дальше давим в консоли кнопки: стрелка вверх, enter. С любой частотой, какая нравится.
Тут 100% полное перечитывание файла, все что есть на диске в момент запуска, без всяких оптимизаций с использованием Notifications
Результат тот же самый. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд.
...
Рейтинг: 0 / 0
Эффективное(быстрое) логирование в файл
    #39123870
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда остаются грабли реализации стандартной библиотеки, по которым разработчики ОС уже потоптались пятнадцать назад.
Если реализация "оптимизирует" число (системных) вызовов write() - это её проблемы. Навешивать костыль в виде flush() - именно, что навешивать костыль.

P.S. Разумеется, могут быть и ньюансы с 512e (эмуляция 512-байтовых секторов поверх 4КБайт физических), но принудительный сброс в лог каждой строчки - был и остаётся костылём.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Эффективное(быстрое) логирование в файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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