Я настраиваю Serilog для записи в приемник ElasticSearch (и консоль), поэтому предпочитаю настраивать Serilog только один раз в DI с помощью:
Код: Выделить всё
builder.Host.UseSerilog((ctx, lc) => lc
.WriteTo.Elasticsearch(
new ElasticsearchSinkOptions(new Uri("https://esk.mycompany.com:443"))
{
AutoRegisterTemplate = true,
IndexFormat = "logs-mycompany-myservice",
TypeName = null,
BatchAction = ElasticOpType.Create,
ModifyConnectionSettings = (c) =>
{
c.ServerCertificateValidationCallback(
(o, certificate, arg3, arg4) => { return true; });
c.GlobalHeaders(new NameValueCollection { { "Authorization", "ApiKey " + "..." } });
return c;
},
}
)
.Enrich.WithElasticApmCorrelationInfo()
.ReadFrom.Configuration(ctx.Configuration)
.WriteTo.Console()
);
Код: Выделить всё
public class ServiceA
{
private readonly ILogger _logger;
public ServiceA(ILogger logger, string pathA)
{
logger.SetPath(pathA) // All serviceA's logs will be saved in "pathA"
_logger = logger;
}
}
public class ServiceB
{
private readonly ILogger _logger;
public ServiceB(ILogger logger, string pathB)
{
logger.SetPath(pathB) // All serviceB's logs will be saved in "pathB"
_logger = logger;
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... based-on-s