C# -  Criando um log de auditoria


 Neste artigo vamos criar um log de auditoria na linguagem C#.

Gravar informações de log de uma aplicação é um recurso básico e fundamental para uma aplicação robusta quer por razões de auditoria, segurança, rastreamento ou apenas informação.

Você pode criar o seu próprio log de auditoria ou usar outros recursos para fazer isso. Veja os meus artigos:  NET - Apresentando e usando Log4Net - Macoratti  e Usando o Serilog

Neste artigo veremos como criar um log de auditoria para projetos simples onde vamos registrar as mensagens em um arquivo texto.

Recursos usados:

Criando um projeto Console

Abra o VS 2017 Community e crie um projeto do tipo Console Application chamado CSharp_LogErros.

A seguir inclua uma classe chamada RegistraLog no projeto via menu Project -> Add Class, com o seguinte código :

using System;
using System.IO;
using System.Reflection;
namespace CSharp_LogErros
{
    public class RegistraLog
    {
        private static string caminhoExe = string.Empty;
        public static bool Log(string strMensagem, string strNomeArquivo = "ArquivoLog" )
        {
            try
            {
                caminhoExe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                string caminhoArquivo = Path.Combine(caminhoExe, strNomeArquivo);
                if (!File.Exists(caminhoArquivo))
                {
                    FileStream arquivo = File.Create(caminhoArquivo);
                    arquivo.Close();
                }
                using (StreamWriter w = File.AppendText(caminhoArquivo))
                {
                    AppendLog(strMensagem, w);
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        private static void AppendLog(string logMensagem, TextWriter txtWriter)
        {
            try
            {
                txtWriter.Write("\r\nLog Entrada : ");
                txtWriter.WriteLine($"{DateTime.Now.ToLongTimeString()} {DateTime.Now.ToLongDateString()}");
                txtWriter.WriteLine("  :");
                txtWriter.WriteLine($"  :{logMensagem}");
                txtWriter.WriteLine("------------------------------------");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
 

Nesta classe temos o método estático Log() com dois parâmetros: mensagem e nome do arquivo de log. Sendo que o nome do arquivo de log é opcional.

Agora vamos testar...

No arquivo Program.cs inclua o código abaixo no método Main():

using System;
namespace CSharp_LogErros
{
    class Program
    {
        static void Main(string[] args)
        {
                 RegistraLog.Log(String.Format($"{"Log criado em "} : {DateTime.Now}"), "ArquivoLog");
            RegistraLog.Log("Registro de log de auditoria");

            WriteLine("Log criado e registrado com sucesso");
            ReadLine();
        }
    }
}

Estamos usando o método estático Log da classe RegistraLog e inicialmente informando o nome do arquivo de Log e depois informando apenas a mensagem.

O arquivo de log será criado na pasta bin\Debug.

Abaixo vemos o arquivo criado na pasta do projeto e ao lado o arquivo de log aberto no editor Sublime:

É uma solução bem simples para projetos simples.

Pegue o projeto completo aqui:   CSharp_LogErros.zip

E estamos conversados...

"Tomando sobretudo o escudo da fé, com o qual podereis apagar todos os dardos inflamados do maligno. "
Efésios 6:16

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti