|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
Запись логов в файл. Последствия для памяти04.11.2024, 22:06. Показов 5587. Ответов 65
Метки нет (Все метки)
Вечер добрый!
У меня давно есть некий код, который я использую для логгирования своих приложений. Суть его в том, что при инициализации логгера задается максимальное количество строк для файла и приложение передает в него по одной строке, которая добавляется в конец файла. Каждый раз при добавлении проверяется, превысили ли мы максимально допустимое количество строк и если да, то логгер удаляет самую верхнюю строку текстового файла и т.д. При добавлении каждой строки происходит процедура открытия и закрытия файла. Подскажите пожалуйста, есть ли принципиальная разница в том, оставлять файл открытым или открывать и закрывать его при каждом добавлении сроки? Интересуют нюансы работы с памятью, в частности, не происходит ли при открытии и закрытии записи какой-то инфы в файл, что при частых манипуляциях может затирать досмерти ячейки памяти и т.п. Всем спасибо за участие!
0
|
|
| 04.11.2024, 22:06 | |
|
Ответы с готовыми решениями:
65
Запись логов в файл SpringBoot и запись логов в файл. - не пишет |
|
|
|
| 06.11.2024, 05:54 | |
|
В utf8, utf16, utf32, какая разница?)))
Откуда у вас такое понимание странное? Есть источник? Добавлено через 2 минуты Seek установит курсор в произвольное место файла, а write запишет туда то, что сказано. Если текстовый или иной файл повредится, юзер сам дурак.
0
|
|
|
|
|
| 06.11.2024, 06:03 | |
|
Rius, это к порядку считывания. Как вы системе даете понять, что считывать надо с ЭТОГО места и до ЭТОГО, причем учитывая кодировки и прочую лабуду... ?
Как СИСТЕМА вставит в конец файла часть, не изучив перед этим где этот КОНЕЦ и как его интерпретировать? Добавлено через 2 минуты Rius, я не знаю как вписать данные в определенное место обычного файла. Если Вы знаете, то поделитесь секретом. Добавлено через 3 минуты Rius, напомню, что речь идет не за эвалуированные инструкции, а именно за внутренние механизмы, которые заснеженному взгляду не видны..
0
|
|
|
|
||||
| 06.11.2024, 06:11 | ||||
Остальное делает система. Понадобится считать блок - считает. Но не весь файл. Добавлено через 4 минуты
0
|
||||
|
|
||||||
| 06.11.2024, 06:15 | ||||||
|
Rius, ты не понял... Вы не поняли... (я путаюсь с ты/вы)
Допустим, есть файл:
Что сделает твой (тьфу, Ваш) механизм в этом случае? Добавлено через 1 минуту P.S. у меня есть ответ, но я хочу услышать мнения...
0
|
||||||
|
|
|
| 06.11.2024, 06:20 | |
|
А я не про изменение текста в середине текстового файла.
В этом случае вам придётся читать, да. Я про дозапись данных в конец файла. Запись логов это дозапись именно в конец. Предыдущее содержимое не важно. Добавлено через 3 минуты Вот про изменение текстовых файлов в середине: Добавление записи в XML-файл без его перезаписи
0
|
|
|
|
||
| 06.11.2024, 06:25 | ||
|
Добавлено через 2 минуты Rius, все это наводит на мысль, что система все же, скрывая от лишних глаз, "проигрывает" все это в своих внутренностях, прежде чем что-то куда-то записать...
0
|
||
|
|
|
| 06.11.2024, 06:31 | |
|
Вы говорите установить курсор в конец файла и записать массив байт.
Система ищет место в файловой системе и пишет туда. Если это середина блока, а не чисто новый, то считывает его и дополняет. Добавлено через 1 минуту Можете fatfs от Чана собрать в программе на C и посмотреть на работу внутренней кухни.
0
|
|
|
|
|
| 06.11.2024, 06:35 | |
|
В конец файла.... А где это конец, как его определяет система? Где его начало? Именно ЭТОГО участка памяти, который меня интересует.
Добавлено через 1 минуту Rius, ну, я размышляю от имени машины... как бы с ее точки зрения.
0
|
|
|
|
||||
| 06.11.2024, 06:47 | ||||
|
По общему спору, с тем что система просто выставляет указатель в конец файла и начитает шарашить туда байты: для 100% доказательства нужно на самом низком уровне отлавливать непосредственные обращения к диску и смотреть что там происходит. Подозреваю что там ворох оптимизаций и ньюансов для каждой "железяки" (виртуальные диски передают привет). Но как заметил выше Rius: - вроде как открытие файла и выставление указателя в конец одинаково быстро как для 1МБ, так и для 100ГБ. - дозапись любой кодировки не основывается на ранее записанных символах, а подразумевает тупо добавление новых блоков байт. Исходя из этого мне кажется что перезапись происходит не всего файла, а только его части. Если ещё точнее -- берется крайний кластер отвечающий за конец файла, в него дозаписывается сколько влезет, а дальше идет выделение новых кластеров (у нас же вроде обсуждается добавление в конец файла). Либо я не врубаюсь, и вы подразумеваете что "в рандомном месте поменяли 10 запятых на 5 точек, и пытаемся это адекватно сохранить". Тогда "да": потенциально перелопачивать весь файл, но как писал в самом начале -- таким лучше не страдать.
0
|
||||
|
|
||
| 06.11.2024, 06:57 | ||
|
В общем ответ: ничего страшного не должно происходить. На C# файл -- абстракция, причем лютейшая. Непосредственная перезапись ячейки на SSD произойдет через десяток посредников, начиная от внутреннего кода CLR и заканчивая контроллером железки. И так уж сложилось, что человечество заинтересовано в производительности всего этого зоопарка, и закладывает различные оптимизации прям на низком уровне, чтобы не страдали прикладные программы.
0
|
||
|
|
|
| 06.11.2024, 06:57 | |
|
Rius, Wolfdp, обыкновенный дискусс с умными людьми - это всегда интересно. Кто-то свою истину найдет. Простите меня, я немного отдыхаю (др у дочки), с пьяну завел диалог... Хотя, тема актуальная, все же. Я не верю в волшебные свойства виндовых ридеров - по любому захватывают дамп, чтобы что-то вписать.
Rius, Wolfdp, спасибо за диалог, добра вам!
0
|
|
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 04.02.2025, 05:28 [ТС] | |
|
Возрождаю тему уточняющим вопросом)
Выше писали про то, что Append именно ДОБАВЛЯЕТ текст в конец файла. Но как именно происходит добавление? Например, я добавляю текстовому файлу в конец точку. Размер текста 6кб, размер кластера на диске 4кб, соответственно, размер файла 8кб. В таком случае дозаписывается только заданное количество байт или перезаписывается весь последний кластер? Вопрос возник глядя на БД, в которых данные могут добавляться сотни раз в секунду, при этом они не висят в оперативной памяти ожидая сохранения, а пишутся сразу на диск, и тем не менее ssd как-то вывозят по ресурсу.
0
|
|
|
|
||||
| 04.02.2025, 06:41 | ||||
|
Тем не менее, торренты не рекомендуется качать на SSD. А сам SSD - расходник, сдох - меняют.
0
|
||||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||
| 04.02.2025, 12:16 [ТС] | ||
|
Rius,
0
|
||
|
|
|||
| 04.02.2025, 12:24 | |||
|
Память в SSD имеет очень ограниченное количество стираний, поэтому там вынужденно применяются алгоритмы Wear Leveling.
Также есть файловые системы, учитывающие низкий ресурс SSD.
2
|
|||
| 04.02.2025, 12:56 | ||
|
Не по теме:
вот не раз слышал об этом, но у меня на компе SSD (старенький кингстон SATA 500 гигов) уже живет около 10 лет. активно пользую, что-то удаляю, что-то устанавливаю и никак диск не помрет, а там еще виндовый файл подкачи и всякая виндовая закулисная деятельность, но две файловые помойки на HDD сдохли всего за 5 лет при менее активном использовании, вот такой парадокс, так что когда говорят про долговечность HDD мне кажется имеют ввиду сами диски, а механика и контролер там ломаются куда чаще, чем появляется много битых секторов
0
|
||
|
|
|
| 04.02.2025, 12:58 | |
|
Долговечность HDD в том, что количество перезаписей одного участка не ограничено (в сравнении с SSD).
А у SSD - 1000 стираний и всё, ячейка сдохла. Остальное, у кого сколько проработало, это сочетание качества, брака и удачи. Ну и условий эксплуатации.
1
|
|
| 04.02.2025, 12:58 | |
|
Запись логов в файл из службы Windows
Уровни логирования SpringBoot и запись логов в файл. - не пишет :( Запись "логов" в файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|