![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выгрузка сообщений об ошибках в текстовый файл [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(...);