Ограничить размер лог-файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Ограничить размер лог-файла

Сообщение Williams » 03.06.2008 (Вт) 14:15

Например до 512 KB.

Как обычно делается замена последних строк за тем, чтобы не привысить максимальный размер файла? Считывать не до конца, а затем снова записывать вроде-как не красиво получается.

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 03.06.2008 (Вт) 15:21

А какого вида записи делаются в файл? Они сильно варьируются по длине?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Сообщение Williams » 03.06.2008 (Вт) 15:45

Zenitchik

Ну да, например 10:23 Program has started, 10:25 Thread successfully exited, и.т.п - в принципе разная длина.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 03.06.2008 (Вт) 15:49

Считать построчно. Дописать в конец новую строку. Убить строки из начала, чтобы подходил по длине. Записать. Ы?
label:
cli
jmp label

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.06.2008 (Вт) 15:52

Williams, в любом случае тебе придется считывать весь файл (в данном случае удобнее в массив строк). Смотреть на его размер при добавлении очередной строки. При необходимости удалять первую строку (строки). После чего записывать оставшуюся часть лога в файл.
Весь мир матрица, а мы в нем потоки байтов!

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.06.2008 (Вт) 17:50

вариант со списыванием строк интересен, а не проще ли просто писать лог в конец а потом брать последние 512кБ текста :)

для красоты потом можно первый перевод каретки брать и до него все вырезать
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 03.06.2008 (Вт) 18:12

А в чём разница? Можно и так.. Просто читать-то всё равно целиком весь файл...

Впрочем, да. С массивом строк в данном случае работать менее удобно, чем с одним String'ом.
label:
cli
jmp label

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.06.2008 (Вт) 18:22

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

И если вдруг файл крупноват, то тогда бинарным способом сливать данные начиная с
ДЛИНА ФАЙЛА - НУЖНЫЙ РАЗМЕР и длиной в НУЖНЫЙ размер.
после считывания найти первую каретку каретку
и вписать в файл все что после коретки одним мидом :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 55

    TopList