2010-06-30 24 views
13

estoy tratando de leer los registros de eventos para mi aplicación EventLoggingApp. El problema es leer los registros de mi fuente única (EventLoggingApp).Leer registro de eventos en C#

Este código lee los registros de todas las fuentes. ¿Cuál es el problema? ¿Algún consejo?

static void ReadEvenLog() 
{ 
    string eventLogName = "Application"; 
    string sourceName = "EventLoggingApp"; 
    string machineName = "Tom"; 

    EventLog eventLog = new EventLog(); 
    eventLog.Log = eventLogName; 
    eventLog.Source = sourceName; 
    eventLog.MachineName = machineName; 

    foreach (EventLogEntry log in eventLog.Entries) 
    { 
     Console.WriteLine("{0}\n",log.Source); 
    } 
} 

Respuesta

-2

Si se conecta a localhost conjunto MachineName a "" Compruebe si el usuario tiene derecho a leer desde el registro de eventos

+1

Desde que recibe todos los registros de su máquina, no hay problemas de seguridad. – atamanroman

4

Consulte este article en MSDN. No puede leer las entradas del registro de eventos por fuente. Solo el nombre de registro importa. En su lugar, puede crear un registro de eventos por separado para su aplicación o filtrar entradas verificando la propiedad de origen de cada entrada en el bucle foreach.

+2

Thx, soy de Eslovaquia, tu spa es mucho mejor que mi :) – Tom159

1

MSDN (1)(2) dice que Source es solo para escribir registros de eventos.

No es necesario especificar una Fuente cuando solo lee desde un registro. Solo puede especificar las propiedades Nombre de registro y Nombre de máquina (nombre de equipo de servidor) para la instancia de EventLog. En cualquier caso, el miembro de entradas se rellena automáticamente con la lista de entradas del registro de eventos. Puede seleccionar el índice apropiado para un elemento en esta lista para leer entradas individuales. (1)

0

No estoy seguro de lo que intenta imprimir en la consola. Si es el mensaje en cada entrada de registro de eventos que usted está tratando de imprimir, dentro del bucle foreach usted debe tener esto en su lugar:

Console.WriteLine(log.Message + "\n"); 
11

Prueba esto:

EventLog log = new EventLog("Security"); 
var entries = log.Entries.Cast<EventLogEntry>() 
         .Where(x => x.InstanceId == 4624) 
         .Select(x => new 
         { 
          x.MachineName, 
          x.Site, 
          x.Source, 
          x.Message 
         }).ToList(); 
Cuestiones relacionadas