Sto integrando Serilog nella libreria multilayer esistente che ho creato. La precedente tecnica di registrazione che usavo era semplicemente passare una stringa sugli strati con gli eventi. Mi piacerebbe andarmene da questo.
Mi è stato detto per anni che non dovresti mai esporre i bambini a oggetti a livello dei loro genitori, ma questa è l'unica struttura che ho inventato finora. Qualcuno ha un'altra struttura da suggerire?
semplice esempio della struttura che sto usando.
class Program
{
static void Main(string[] args)
{
ILogger logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
A a = new A(logger);
a.DoStuff();
}
}
class A
{
public ILogger logger;
private B b;
public A(ILogger logger)
{
this.logger = logger;
b = new B(logger);
}
public void DoStuff()
{
logger.Information("blah class a");
b.DoStuff();
}
}
class B
{
public ILogger logger;
private C c;
public B(ILogger logger)
{
this.logger = logger;
c = new C(logger);
}
public void DoStuff()
{
logger.Information("blah class b");
c.DoStuff();
}
}
class C
{
public ILogger logger;
public C(ILogger logger)
{
this.logger = logger;
}
public void DoStuff()
{
logger.Information("blah class c");
Thread thread = new Thread(() =>
{
for (int i = 0; i < 10; i ++)
{
logger.Information("In thread {i}", i);
}
});
Thread thread2 = new Thread(() =>
{
for (int i = 0; i < 10; i++)
{
logger.Information("In thread {i}", i);
}
});
thread.Start();
thread2.Start();
thread.Join();
thread2.Join();
}