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

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

вести логи действий


petrovich ©   (2011-03-17 14:57:00) 

нужно логировать определенные дейтсвия в программе и записывать в текстовый файл, как это лучше сделать.

1. AssignFile(), Rewrite(), Write()
2. TFileStream


Loginov Dmitry   (2011-03-18 12:42:00) [1]

А где не велосипед?
Предложи!


Игорь Шевченко   (2011-03-18 00:00:00) [2]


> Рекомендую LDSLogger


Это даже не велосипед, это трактор Беларусь с пятью квадратными колесами


Loginov Dmitry   (2011-03-17 23:35:00) [3]

Рекомендую LDSLogger
http://matrix.kladovka.net.ru/download.php?getfilename=uploads/other/ldslogger.zip

Перед использованием создается объект логгера:
Log := TLDSLogger.Create('C:\MyApp\Events.log');

для добавления в лога:
Log.LogStr('Текстовое сообщение', тип_сообщения);

Традиционно, к конце работы программы можно удалить объект:
Log.Free;

по умолчанию обрезает файл лога до 1.3МБ. Размер лога настраивается. Вместо обрезки (по размеру или по дате) можно использовать переименование (для минимизации количества операций ввода-вывода).
Имеется куча настраиваемых параметров.
Синхронизация как между потоками, так и между процессами.
Гарантируется немедленный сброс строки на диск (т.е. нет никакой отложенной записи в ОЗУ).
В общем, максимальная надежность при любых условиях, а также приемлемая производительность.


tippa   (2011-03-17 18:58:00) [4]

procedure LogFile(filepath,str: string );//имя файла и записываемая строка
var F: THandle;
   Tmp: string;
begin
 F:=CreateFile(pchar(filepath),
               GENERIC_WRITE or GENERIC_READ,
               FILE_SHARE_READ or FILE_SHARE_WRITE,
               nil,
               OPEN_ALWAYS,
               FILE_ATTRIBUTE_NORMAL,
               0);
 if F = INVALID_HANDLE_VALUE then Exit;
 SetFilePointer(F, 0, nil, FILE_END);
 Tmp := str + #13#10;
 FileWrite(F,pchar(Tmp)^,Length(Tmp));
 CloseHandle(F);
end;


oldman   (2011-03-17 16:57:00) [5]


> это можно объединить в одну процедуру


в одну строку даже можно


clickmaker   (2011-03-17 16:23:00) [6]

> S := Format(C_CAN_NOT_CONNECT_TO_DB, [Host, Port, Name,
> user_name, Pass]);
> WriteFile(hlog_file, S[1], Length(S), N, nil);

это можно объединить в одну процедуру


Jeer   (2011-03-17 16:07:00) [7]


> пролучается как-то громоздко


Если "пролучается", то не делай.
Громоздко для кого ? Для твоего мозга ?


petrovich   (2011-03-17 15:56:00) [8]


> CreateFile, WriteFile


так вот? пролучается как-то громоздко.

if not db_connect(Host, Port, Name, user_name, Pass) then
begin
 S := Format(C_CAN_NOT_CONNECT_TO_DB, [Host, Port, Name, user_name, Pass]);
 WriteFile(hlog_file, S[1], Length(S), N, nil);
end;


clickmaker   (2011-03-17 15:15:00) [9]

CreateFile, WriteFile


И. Павел   (2011-03-17 15:15:00) [10]

Вот тут много готовых вещей насоветовали:
http://forum.vingrad.ru/forum/topic-280053.html


Наверх

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