Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выгрузка сообщений об ошибках в текстовый файл [D7, XP]


grav ©   (2009-10-23 11:35:00) 

Гружу данные в базу. Хочу сообщения об ошибках выгружать в текстовый файл.
Создал список
ErrorList:= TStringList.Create;
и гружу в него
try
...
except
ErrorList.Append(...);
end;
ErrorList.SaveToFile('error.log');

В итоге в файле только последняя ошибка. Что не так делаю?
Спасибо!


RWolf   (2009-10-23 15:42:00) [1]


> Игорь Шевченко

Согласен, если контролировать размер списка и вовремя удалять старые записи — проблем нет.


Игорь Шевченко   (2009-10-23 15:12:00) [2]


> вообще, что это за дикий способ ведения лога?


Я бы не стал так категорично утверждать.

В ряде проектов я использую именно такой способ (заполнение TStrings), так как потом этот протокол можно перенаправить сразу в три места, на экран, в базу данных и в письмо с сообщением об ошибке.


grav   (2009-10-23 15:04:00) [3]


> RWolf ©   (23.10.09 14:06) [11]

Спасибо за ссылку, изучаю. И действительно, чего мне сразу в файл не писалось.


RWolf   (2009-10-23 14:06:00) [4]

обсуждение: http://www.delphimaster.ru/cgi-bin/forum.pl?id=1255442299&n=18


grav   (2009-10-23 14:02:00) [5]


> RWolf ©   (23.10.09 13:58) [9]

Научите пожалуйста как лог писать.
Грузятся в базу данные из XML файла, всего 45 таблиц.
После каждого insert пытаюсь выгрузить ошибки и sql запрос в файл.
Как правильно это реализовать?


RWolf   (2009-10-23 13:58:00) [6]

вообще, что это за дикий способ ведения лога?


RWolf   (2009-10-23 13:57:00) [7]

ну, гигабайта два, полагаю (не проверял).


grav   (2009-10-23 13:50:00) [8]

Новая напасть. Out of Memory
Какой объем можно запихнуть в TStringList?


grav   (2009-10-23 12:35:00) [9]

точно, затирает все ErrorList.Assign.
буду текст запроса писать так
ErrorList.Add(LoadQr.SQL.text);
Вот только большие запросы наверное не получиться так записать


grav   (2009-10-23 12:06:00) [10]


> И. Павел ©   (23.10.09 11:56) [4]

Вот таких  много
try
...
except
ErrorList.Append(...);
end;


Такая строчка одна в конце загрузки.
ErrorList.SaveToFile('error.log');

Точнее вот так:
try
...
except
ErrorList.Append(E.Message);
ErrorList.Assign(LoadQr.SQL);
end;


Может Assign виноват?


И. Павел   (2009-10-23 11:56:00) [11]

try
...
except
ErrorList.Append(...);
end;
ErrorList.SaveToFile('error.log');

Судя по коду, можно подумать что автор вызывает его несколько раз и ждет, чтобы очередной Save добавил строчки к предыдущему. Нужно сначала выполнить все Append/Add, а затем, в самом конце, вызвать SaveToFile.


brother   (2009-10-23 11:42:00) [12]

> это заменить а надо:

читать как:
это если необходимо заменить, а тебе надо добавить


И. Павел   (2009-10-23 11:41:00) [13]

Элементарный код:
 SL:=TStringList.Create;
 SL.Clear;
 SL.Append('123');
 SL.Append('456');
 SL.SaveToFile('C:\str.txt');

пишет в файл две строки, так что ваша ошибка, наверное, в том коде, который вы заменили многоточием.


brother   (2009-10-23 11:40:00) [14]

> ErrorList.Append(...);

это заменить а надо:
ErrorList.Add(...);


Наверх

Титульная страница Поиск, карта сайта Написать письмо