Olá pessoal, hoje gostaria de mostrar e falar como escrever log no eventview do Windows usando a linguagem C#.NET. São dois métodos simples, pois eu crio um novo item junto do event view, ficando assim mais um item na tela de evento.
Usado:
Linguagem C#.NET
Ferramenta: Visual Studio .NET
Tipo da plataforma: Classe geral


Figura 1

        O item marcado Transferir Arquivos foi criado pelo código. Então vamos lá!
O primeiro método chamado EscreverLog passa quatro parâmetros do tipo string e EventLogEntryType.
        No caso deste artigo, vou mostrar o método que verifica se foi passado o nome do diretório (Transferir Arquivos), por exemplo, se não for passado o nome do diretório o log será gravado dentro do item (Aplicativo) conforme mostrado na figura 1. Code 1

public static void EscreverLog(string source, string logName, string message, EventLogEntryType type) 
        {
            if (String.IsNullOrEmpty(source)) 
            {
                throw (new ArgumentException(Resources.NullOrEmptyValue, "source"));
            }

            if (String.IsNullOrEmpty(message))
            {
                throw (new ArgumentException(Resources.NullOrEmptyValue, "message"));
            }

            EventLogWriter.VerificaDiretorio(source, logName);

            EventLog.WriteEntry(source, message, type);
        }
Code 1

        Note que na penúltima linha, existe um método chamado VerificaDiretorio(source, logName). Esse método verifica se a string logName é igual a null. Se for igual a null, ele grava o log dentro do item Application ou Aplicativo, se não for igual a null ele cria um item (como se fosse um diretório) dentro do event view de acordo com o nome passado.  O código 2 mostra como é feito. Code 2.


private static void VerificaDiretorio(string source, string logName)
        {
            if (String.IsNullOrEmpty(logName))
            {
                logName = "Application";
            }

            if (!EventLog.SourceExists(source))
            {
                EventSourceCreationData sourceData = new EventSourceCreationData(source, logName);

                EventLog.CreateEventSource(sourceData);
            }
        }

Code 2.

        Criei um outro método público chamado EscreverErro com apenas dois parâmetros de entrada, isso significa que, o evento será gravado dentro do item padrão do event view. Ele não cria um novo item, apenas registra. Com estes métodos você pode usar um ou outro dependendo da sua necessidade. Code 3.


public static void EscreverErro(string source, string message) 
        {
            EventLogWriter.Write(source, null, message, EventLogEntryType.Error);
        }

Code 3.
        Lembro que no código 1, o último parâmetro é do tipo EventLogEntryType que identifica o ícone de registro.  Outra dica importante é, coloque no início da sua classe o using System.Diagnostics. É necessário para entender o EventLogEntry.
 
Espero que tenham gostado e qualquer dúvida pode entrar em contato.