Utilizzo di Serilog dall'interno del WCF
Domanda
Sto usando Serilog dal mio sito web e API Web tutto buono.
Ora voglio usare Serilog da wcf.
Ma quando ho nuovo su un loggerconfigurazione e crea un logger da WCF, la registrazione non sembra funzionare?Ad esempio, nulla viene emesso al file di testo.
var seriLog = new LoggerConfiguration()
.WriteTo.File(@"C:\Serilogs\myapp.txt")
.CreateLogger();
seriLog.Debug("log message");
.
Alla fine voglio scrivere su Seq dall'interno del servizio WCF.
Cosa mi manca o sbaglio?
Qualcuno ha alcuni campioni di codice di lavoro di come questo sarebbe fatto?
Ci sono trucchi per utilizzare lo stack Serilog / Seq da WCF?
Soluzione
Ci sono un paio di cose che vengono in mente -
Innanzitutto, il codice di installazione è qui eseguito solo una volta, cioè all'avvio dell'applicazione, quindi c'è esattamente un logger che punta al file di testo?Solo un'istanza del logger può utilizzare il file alla volta.
Avanti, è il processo in esecuzione con il permesso di accedere al file?
Ultimo, è il file aperto ad es.in Blocco note o un'altra app che potrebbe averlo bloccato?
Se nessuno di questi scatena alcuna idee, è possibile impostare il self-log di Serilog prima di configurare il logger:
SelfLog.Out = Console.Error;
.
Questo dovrebbe essere visualizzato nel debugger vs, quindi se Serilog sta prendendo e sopprendendo le eccezioni dovresti vederle.
Se non riesci ad eseguirlo in un debugger, prova:
SelfLog.Out = File.OpenText(@"C:\loglog.txt");
.
A volte trovo l'esecuzione dell'app sotto il debugger con "Break su tutte le eccezioni" abilitato può essere un modo rapido per arrivare fino in fondo (Ctrl-D, E -> Eccezioni CLR [x] lanciate, [x] non gestito).