Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для _Vladimir_
57 / 55 / 10
Регистрация: 27.07.2010
Сообщений: 279

Запись логов в файл с ограниченным числом строк

17.01.2019, 00:45. Показов 2975. Ответов 6

Студворк — интернет-сервис помощи студентам
Всем привет.

Как лучше писать логи в файл, который должен содержать не больше 100 тыс. строк?

На данным момент у меня организовано так (исторически сложилось), что по достижению максимального лимита, 90% самых новых записей копируется в буфер, файл очищается и строки из буфера построчно обратно пишутся в файл. Но проблема в том, что они записываются очень медленно, минут 5, плюс система замирает и ничего нельзя сделать.
Может важно, т.к. в файл могут писать разные потоки, он блокиется им.

Можно ли оптимизировать этот процесс?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.01.2019, 00:45
Ответы с готовыми решениями:

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

Запись логов в файл
Добрый день, подскажите в чём проблема, необходимо сделать след: 1. Логи с приоритетом info - пишутся только в консоль 2. Логи с...

Запись логов в файл
Добрый день. Есть небольшое клиент-серверное приложение на сокетах, работающее с БД. Вопрос: как лучше написать небольшой логгер,...

6
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.01.2019, 00:48
Цитата Сообщение от _Vladimir_ Посмотреть сообщение
Можно ли оптимизировать этот процесс?
https://logback.qos.ch/
1
 Аватар для _Vladimir_
57 / 55 / 10
Регистрация: 27.07.2010
Сообщений: 279
17.01.2019, 01:03  [ТС]
KEKCoGEN, спасибо, но в связи с некоторыми особенностями проекта нам настоятельно рекомендуют не использовать сторонние библиотеки ((

Добавлено через 11 минут
Есть идея переименовать текущий файл во временный и с интервалом скажем в 500 миллисекунд перебрасывать строки во вновь созданный, но как-то мне такое решение не очень.
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
17.01.2019, 01:39
Цитата Сообщение от _Vladimir_ Посмотреть сообщение
Есть идея переименовать текущий файл во временный и с интервалом скажем в 500 миллисекунд перебрасывать строки во вновь созданный, но как-то мне такое решение не очень.
А почему? Вы же делаете тоже самое, только не через время а через лимит заполнения, новый файл с тем же именем, просто 100к раз обращаетесь к записи в буфер, столько же обратно, + все это время постоянно что-то блокируется, то на запись то на чтение.
По сути вы же просто оставляете в файле 90% новых данных, или что еще проще, удаляете 10% первых записей(что бы я и попытался сделать), или я что-то непонял..
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.01.2019, 08:59
Цитата Сообщение от _Vladimir_ Посмотреть сообщение
астоятельно рекомендуют не использовать сторонние библиотеки
Там открытые исходники. Скопируй их, вставь в свой проект с изменением пакетов и скажи что сам написал.

Ну и кроме всего прочего это очень идиотское требование.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
17.01.2019, 11:47
Лучший ответ Сообщение было отмечено _Vladimir_ как решение

Решение

Цитата Сообщение от _Vladimir_ Посмотреть сообщение
Можно ли оптимизировать этот процесс?
Использовать logrotate, например.
1
 Аватар для _Vladimir_
57 / 55 / 10
Регистрация: 27.07.2010
Сообщений: 279
17.01.2019, 14:50  [ТС]
ViktorFX, все верно, целью является удаление певых 10 тыс. записей в файле.

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

Добавлено через 7 минут
KEKCoGEN, Спасибо. Уже смотрю.
А требование основано на горьком опыте )) Проект мягко говоря мудреный и главное - умирающий, в основном фикс багов, т.е. новую зависимость добавят только если совсем без нее никак ((

Добавлено через 41 секунду
korvin_, Интересное решение. Возможно на нем остановимся. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2019, 14:50
Помогаю со студенческими работами здесь

Запись логов в файл из службы Windows
В классе задаю StreamWriter sw = File.AppendText("Log.txt"); В методе OnStart вызываю Writetolog("onstart"); async void...

Ограничить запись в файл определённым числом записей
Есть файл с записями с постоянной длинной каждой записи. Как сделать так, чтобы после того как в файле записалось, например, 100 записей,...

Запись "логов" в файл
В общем постепенно делаю логирование для программы. Для начала хотел бы разобраться со временем работы программы, далее уже по принципу...

Создать текстовый файл с произвольным числом строк
День добрый. Помогите, пожалуйста. Задание следующее: "Создать текстовый файл с произвольным числом строк. После каждого слова...

Выгрузка данных в Excel с ограниченным количеством строк
Добрый день! Мне нужно выгружать в каждый файл Excel до 1000 строк с базы данных. Вот мой код: Запрос=Новый Запрос; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru