Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
2-1144762527
Der Nechk@ssoff
2006-04-11 17:35
2006.04.30
Данные из ini


4-1139338516
Still Swamp
2006-02-07 21:55
2006.04.30
как получить звуковой поток c TAPI?


15-1144529218
Petr V. Abramov
2006-04-09 00:46
2006.04.30
Что? Где? Когда? 2006


15-1143130658
Symbios
2006-03-23 19:17
2006.04.30
БПФ


6-1137084456
bloodman
2006-01-12 19:47
2006.04.30
Перечислить сет. интерфейсы, Как?




   Наверх