Tengo una aplicación .Net Worker Service que tiene varios subprocesos. Quiero registrar cada subproceso en un archivo separado para que sea más fácil leer los registros. ¿Alguna idea para implementar esto?
Una forma común de decidir en qué receptor escribir en tiempo de ejecución es usar Serilog.Sinks.Map :
Log.Logger = new LoggerConfiguration() .WriteTo.Map(_ => Thread.CurrentThread.ManagedThreadId, (threadId, wt) => wt.File($"log-{threadId}.log")) .CreateLogger(); Log.Information("Hello from the main thread"); var task1 = Task.Run(() => Log.Information("Hello from thread X")); var task2 = Task.Run(() => Log.Information("Hello from thread Y")); Task.WaitAll(task1, task2); Log.CloseAndFlush();Debe considerar limitar la cantidad de sumideros abiertos cuando utilice este enfoque.