System.IO.Log


A versão 3.0 do .NET Framework temos um namespace chamado System.IO.Log, qual traz uma série de classes para manipular um log de informações, utilizando o sistema de arquivos como repositório, mas baseando-se em registros. Isso permite catalogar e ler as informações como se elas fossem itens, ao invés de ficar manipulando linhas, strings, etc., como acontece atualmente.

Para fazer o uso dessas classes, é necessário adicionar a referencia para o assembly System.IO.Log.dll que está dentro do seguinte diretório: %ProgramFiles%Reference AssembliesMicrosoftFrameworkv3.0.

Como já era de se esperar, tudo o que for catalogado deverá ser convertido em um array de bytes. Já durante a leitura, o retorno será através de um Stream, que também deverá ser carregado para um array de bytes. O exemplo abaixo exibe como proceder para armazenar dados e também para ler o conteúdo do mesmo arquivo:

using (FileRecordSequence f = new FileRecordSequence(“Teste.log”))
{
    f.Append(
        new ArraySegment<byte>(Encoding.Default.GetBytes(“Mensagem para logar”)),
        SequenceNumber.Invalid,
        SequenceNumber.Invalid,
        RecordAppendOptions.ForceFlush);
}

using (FileRecordSequence f = new FileRecordSequence(“Teste.log”))
{
    foreach (LogRecord r in f.ReadLogRecords(f.BaseSequenceNumber, LogRecordEnumeratorType.Next))
    {
        int length = (int)r.Data.Length;

        byte[] data = new byte[length];
        r.Data.Read(data, 0, length);
        Console.WriteLine(Encoding.Default.GetString(data));
    }
}

Note que para cada append, haverá uma instancia da classe LogRecord que representará o registro corrente. A classe FileRecordSequence, responsável por grande parte do processo, também traz suporte ao processamento assíncrono, com os métodos BeginAppend e EndAppend.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s