Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Как писать в EventLog?   Найти похожие ветки 

 
Lucefer   (2006-02-07 11:00) [0]

Пишу сервис, соотвтетственно никаких окон об ошибках быть не должно, все перехватываю по exception. Сейчас кидаю сообщения в текстовый файл, а как их записать в журнал событий?


 
Игорь Шевченко ©   (2006-02-07 11:40) [1]

RegisterEventSource,ReportEvent

unit eventlog;

interface

uses

 Windows, SysUtils;

var

 hEventLog: THandle;

procedure LOGWRITE(EventCat: Word; EventType: UINT; EventId: DWORD; const Msg: string); overload;
procedure LOGWRITE(EventCat: Word; EventType: UINT; EventId: DWORD; const Msg: string; Args: array of const); overload;
procedure LOGMESSAGE(const Msg: string); overload;
procedure LOGMESSAGE(const Msg: string; Args: array of const); overload;
procedure LOGWARNING(const Msg: string); overload;
procedure LOGWARNING(const Msg: string; Args: array of const); overload;
procedure LOGERROR(const Msg: string); overload;
procedure LOGERROR(const Msg: string; Args: array of const); overload;

function OpenLog(const EventSource: string): Boolean;
procedure SetLogCategory(EventCategory: Word);
procedure CloseLog;

implementation

const

 EVT_MY_ERROR   = $C0000001;
 EVT_MY_WARNING = $80000002;
 EVT_MY_INFO    = $40000003;

var

 EventCat: Word = 0;

function OpenLog(const EventSource: string): Boolean;
begin
 if hEventLog = 0 then
   hEventLog := RegisterEventSource(nil, PChar(EventSource));
 Result := hEventLog <> 0;
end;

procedure CloseLog;
begin
 if hEventLog <> 0 then begin
   DeregisterEventSource(hEventLog);
   hEventLog := 0;
 end;
end;

procedure SetLogCategory(EventCategory: Word);
begin
 EventCat := EventCategory;
end;

procedure LOGWRITE(EventCat: Word; EventType: UINT; EventId: DWORD; const Msg: string);
var
 P: PChar;
begin
 P := PChar(Msg);
 ReportEvent(hEventLog, EventType, EventCat, EventId, nil, 1, 0, @P, nil);
end;

procedure LOGWRITE(EventCat: Word; EventType: UINT; EventId: DWORD; const Msg: string; Args: array of const);
var
 S: string;
 P: PChar;
begin
 S := Format(Msg, Args);
 P := PChar(S);
 ReportEvent(hEventLog, EventType, EventCat, EventId, nil, 1, 0, @P, nil);
end;

procedure LOGMESSAGE(const Msg: string);
begin
 LOGWRITE(EventCat, EVENTLOG_INFORMATION_TYPE, EVT_MY_INFO, Msg);
end;

procedure LOGMESSAGE(const Msg: string; Args: array of const);
begin
 LOGWRITE(EventCat, EVENTLOG_INFORMATION_TYPE, EVT_MY_INFO, Msg, Args);
end;

procedure LOGWARNING(const Msg: string);
begin
 LOGWRITE(EventCat, EVENTLOG_WARNING_TYPE, EVT_MY_WARNING, Msg);
end;

procedure LOGWARNING(const Msg: string; Args: array of const);
begin
 LOGWRITE(EventCat, EVENTLOG_WARNING_TYPE, EVT_MY_WARNING, Msg, Args);
end;

procedure LOGERROR(const Msg: string);
begin
 LOGWRITE(EventCat, EVENTLOG_ERROR_TYPE, EVT_MY_ERROR, Msg);
end;

procedure LOGERROR(const Msg: string; Args: array of const);
begin
 LOGWRITE(EventCat, EVENTLOG_ERROR_TYPE, EVT_MY_ERROR, Msg, Args);
end;

initialization
 hEventLog := 0;
finalization
 CloseLog;
end.


 
Lucefer   (2006-02-08 11:20) [2]

ух ты. спасибо


 
Chaser ©   (2006-02-09 16:55) [3]

Может это?

http://www.delphisources.ru/pages/sources/raznoe/2006_year/error_log.html



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
2-1145111374
Exciter
2006-04-15 18:29
2006.04.30
Добавить Lookup поле программно


3-1141489847
Александр К...
2006-03-04 19:30
2006.04.30
Распространение приложений, использующих BDE


2-1144849467
que
2006-04-12 17:44
2006.04.30
GetMem&amp;Buffer of data


2-1144915498
elfebet
2006-04-13 12:04
2006.04.30
Может ли программа удалить сама себя?


2-1145000121
_Iton_
2006-04-14 11:35
2006.04.30
Parenт для формы