Дочерние классы Serilog не регистрируются при использовании ByIncludingOnly
Я использую следующую конфигурацию журнала.
.WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(Matching.FromSource<****.Application.Common.Services.Jobs.JobService>()).WriteTo.File("logs/jobs-.log", rollingInterval: RollingInterval.Day))
Я пытаюсь сделать так, чтобы любые классы, вызываемые службой заданий, регистрировались. Я не могу добавить эти классы непосредственно в конфигурацию, потому что они используются из других классов с большим объемом транзакций, и я не хочу портить журнал.
Есть ли способ вести журнал дочерних классов из настроенного вызывающего класса?
1 ответ
Matching.FromSource<****.Application.Common.Services.Jobs.JobService>()
означает, что должно быть точно
****.Application.Common.Services.Jobs.JobService
чтобы соответствовать фильтру.
Если вы хотите, чтобы фильтр соответствовал чему-либо под
Company.Application.Common.Services.Jobs
namespace, то вам нужно применить фильтр на основе пространства имен:
.WriteTo.Logger(lc => lc.Filter
.ByIncludingOnly(
Matching.FromSource(
typeof(****.Application.Common.Services.Jobs.JobService).Namespace)
)
// ...
Этот фильтр будет соответствовать любому фильтру, который начинается с
****.Application.Common.Services.Jobs
NB: вам также необходимо создать регистратор контекста, чтобы включить соответствующие
SourceContext
свойство:
ILogger log = Log.ForContext<****.Application.Common.Services.Jobs.JobService>();
log.Information("...");