Log de rastreio do serviço WCF do Net com gerenciamento de arquivos de log (Rolling)

Eu tenho alguns serviços .net WCF, para esses serviços eu configurei o arquivo app.config para registrar as mensagens enviadas e recebidas em um arquivo .svclog que é legível por "Service Trace Viewer Tool" (SvcTraceViewer.exe). Esta ferramenta processa os arquivos de log de forma bem clara, mostrando as mensagens SOAP sendo processadas.

Eu tenho que usar o ouvinte System.Diagnostics.XmlWriterTraceListener para formatar corretamente o arquivo .svclog para ser processável pela ferramenta Service Trace Viewer Tool.

O problema que tenho é que o arquivo .svclog se torna muito grande e a ferramenta Service Trace Viewer Tool torna-se inutilizável devido a tempos de resposta lentos.

A ferramenta Service Trace Viewer Tool fornece um recurso para permitir que uma parte do arquivo de log seja aberta se o tamanho do arquivo for> 40 MB, mas isso ainda é muito lento. Parece não haver nenhum recurso no arquivo app.config para configurar o .svclog para criar automaticamente um novo arquivo a cada dia ou quando o arquivo chegar a um determinado tamanho.

Há um ouvinte de log de texto chamado Microsoft.VisualBasic.Logging.FileLogTraceListener que suporta uma propriedade logfilecreationschedule = "Daily" que rola o arquivo de log diariamente, no entanto, o arquivo de log resultante desse ouvinte é difícil para uma pessoa de suporte de operação usar como entradas de log não são bem renderizadas e os documentos xml grandes contribuem para a confusão.

Qual é a melhor prática nessa área, parece que eu posso ter que escrever uma extensão de log WCF personalizada que parece ser um exagero apenas lidar com a falta de um recurso de rolagem de arquivo de log no construído em System.Diagnostics.XmlWriterTraceListener ouvinte de log / appender.

Eu também experimentei um script para parar meu aplicativo e renomear os arquivos de log, mas isso não parece ser possível porque no Windows os utilitários handle.exe e openfile não conseguem fechar um arquivo aberto em um compartilhamento de rede, portanto não posso renomear / move o arquivo de log antigo se alguém o estiver procurando em um compartilhamento de rede. Poste uma questão em separado sobre isso em breve.

Obrigado Matt.

questionAnswers(2)

yourAnswerToTheQuestion