visual tiempo que orden los lista formularios formulario formato eventos evento ejecucion crear controles control activate c# events service logging

c# - tiempo - Registrar eventos en un programa de servicio de Windows



orden de eventos en los formularios windows forms (2)

Finalmente conseguí que esto funcionara al combinar varias respuestas de StackOverflow y de MSDN.

Primero incluya los siguientes espacios de nombres

using System.ComponentModel; using System.Diagnostics;

Luego configura el registro en tu constructor

public UserService1() { //Setup Service this.ServiceName = "MyService2"; this.CanStop = true; this.CanPauseAndContinue = true; //Setup logging this.AutoLog = false; ((ISupportInitialize) this.EventLog).BeginInit(); if (!EventLog.SourceExists(this.ServiceName)) { EventLog.CreateEventSource(this.ServiceName, "Application"); } ((ISupportInitialize) this.EventLog).EndInit(); this.EventLog.Source = this.ServiceName; this.EventLog.Log = "Application"; }

Use de la siguiente manera:

protected override void OnStart(string[] args) { base.OnStart(args); this.EventLog.WriteEntry("In OnStart"); }

Creé un programa de servicio de Windows y deseo que mi error se escriba estrictamente en el evento de Windows. Así que seguí estos pasos desde el artículo del proyecto de código:

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

Pero no veo ninguno de los mensajes de registro personalizados que escribí en los registros de eventos creados en la ventana del visor de eventos cuando inicio o detengo el servicio. Además, ¿cómo especifico si el mensaje se debió a un error o simplemente es información?


Primero, MSDN es tu amigo. Asegúrate de revisar el enlace, ya que hay algunos posibles errores que vale la pena conocer.

Esencialmente, creas un objeto EventLog:

this.ServiceName = "MyService"; this.EventLog = new System.Diagnostics.EventLog(); this.EventLog.Source = this.ServiceName; this.EventLog.Log = "Application";

También necesita crear una fuente, si la fuente anterior no existe:

((ISupportInitialize)(this.EventLog)).BeginInit(); if (!EventLog.SourceExists(this.EventLog.Source)) { EventLog.CreateEventSource(this.EventLog.Source, this.EventLog.Log); } ((ISupportInitialize)(this.EventLog)).EndInit();

y luego simplemente usarlo:

this.EventLog.WriteEntry("My Eventlog message.", EventLogEntryType.Information);

en realidad es bastante simple.