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

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

17.01.2019, 00:45. Показов 3014. Ответов 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_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
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
Ответ Создать тему
Новые блоги и статьи
Контроль корректности заполнения дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru