Pergunta
Estou usando o Serilog no meu site e na API da web, tudo bem.
Agora quero usar o Serilog no WCF.
Mas quando eu crio um LoggerConfiguration e crio um criador de logs no WCF, o log parece não funcionar?Por exemplo, nada está sendo enviado para o arquivo de texto.
var seriLog = new LoggerConfiguration()
.WriteTo.File(@"C:\Serilogs\myapp.txt")
.CreateLogger();
seriLog.Debug("log message");
Por fim, quero escrever para o Seq de dentro do serviço WCF.
O que estou perdendo ou fazendo de errado?
Alguém tem alguns exemplos de código funcional de como isso seria feito?
Existem truques para usar a pilha Serilog/Seq no WCF?
Solução
Há algumas coisas que vêm à mente:
Primeiro, o código de configuração aqui está sendo executado apenas uma vez, ou seja,na inicialização do aplicativo, então há exatamente um logger apontando para o arquivo de texto?Apenas uma instância do criador de logs pode usar o arquivo por vez.
A seguir, o processo está sendo executado com permissão para acessar o arquivo?
Por último, o arquivo está aberto, por exemplo.no Bloco de Notas ou em outro aplicativo que possa estar bloqueado?
Se nada disso despertar alguma ideia, você pode configurar o auto-log do Serilog antes de configurar o logger:
SelfLog.Out = Console.Error;
Isso deve ser mostrado no depurador do VS, portanto, se o Serilog estiver capturando e suprimindo alguma exceção, você deverá vê-la.
Se você não conseguir executá-lo em um depurador, tente:
SelfLog.Out = File.OpenText(@"C:\loglog.txt");
Às vezes, acho que executar o aplicativo no depurador com "Quebrar todas as exceções" ativado também pode ser uma maneira rápida de chegar ao fundo da questão (Ctrl-D,E -> Exceções CLR [x] lançadas, [x] não tratadas ).