2009-08-19 10 views
5

Voglio vedere la registrazione degli eventi da un'applicazione Delphi 5 al registro di Windows, e da un altro post here vedo che posso usare la classe TEventLogger per fare questo.Qualche luce per TEventLogger?

Tuttavia, non riesco a trovare alcuna documentazione sulla sintassi della procedura TEventLogger.LogMessage, quindi non so cosa significano tutti i parametri, come usarli o anche quali valori possibili sono disponibili.

Ho provato a guardarmi intorno, e tutto quello che trovo è una pagina di Embarcadero che afferma che la funzione esiste, ma nulla sulla sua sintassi e MSDN non è di alcun aiuto in quanto posso trovare solo la versione di BizTalk che non mi fa bene .

Qualcuno ha una pagina di aiuto o informazioni su questo che potrebbe far luce su cosa posso fare con esso?

risposta

8

TEventLogger è una classe di supporto interna per TService.

Registra messaggio utilizzando la funzione TService.LogMessage(), non chiamando direttamente in TEventLogger. I parametri di LogMessage() corrispondono direttamente ai parametri dell'API Win32 ReportEvent().

Consultare la documentazione dell'API Win32 per i dettagli.

Se non si sta scrivendo un'applicazione di servizio, è necessario richiamare direttamente le API Win32 API RegisterEventSource() e le funzioni ReportEvent().

+0

Questo sarà divertente. Alla fine avrò bisogno di entrambi i metodi poiché l'applicazione può funzionare come un servizio (che vogliamo farne) o un eseguibile standalone (che attualmente è). Almeno so come individuare la modalità in cui è in esecuzione e posso cambiare in modo appropriato. Grazie per l'aiuto a tutti. –

7

Un semplice esempio di una richiesta scritta nel registro degli eventi:

procedure WriteToLog(Msg:string; EventId: Word = 0); 
var 
    h: THandle; 
begin 
    h := RegisterEventSource(nil, PChar(Application.ExeName)); 
    if h > 0 then 
    try 
    ReportEvent(h, 0, 0, EventId, nil, 1, 0, @Msg, nil); 
    finally 
    DeregisterEventSource(h); 
    end; 
end; 

procedure TForm7.Button1Click(Sender: TObject); 
begin 
    WriteToLog('* Blah Blah Blah *'); 
end; 

Ma attenzione che non registering the EventID with the system darà questo tipo di confuso Descrizione:

la descrizione dell'ID evento (0) in Source (C: \ Documents and Settings \ fgaillard \ My Documents \ RAD Studio \ Projects \ Project1.exe) non è possibile trovare . Il computer locale potrebbe non disporre delle informazioni del registro o dei file DLL del messaggio necessari per visualizzare i messaggi da un computer remoto . Potresti essere in grado di utilizzare il flag/AUXSOURCE = recuperare questa descrizione; vedi Guida e supporto per i dettagli. Le seguenti informazioni fanno parte dell'evento: * Blah Blah Blah *.