I've problems in filtering the output of serilog in an asp.net core 3.1 application.
Here is a part of the serilog configuration in appsettings.json:
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.MSSqlServer", "Serilog.Filters.Expressions" ],
"MinimumLevel": "Debug",
"Enrich": [
"FromLogContext"
],
"WriteTo:SubloggerConsole": {
"Name": "Console"
},
"WriteTo:SubloggerFile": {
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"restrictedToMinimumLevel": "Information",
"path": "%TEMP%/Logs/DbCommands.Log",
"rollingIntervall": "Day",
"retainedFileCountLimit": 2
},
"Filter": [
{
"Name": "DbLoggerCategory.Database.Command.Name"
},
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "Contains(@Message, 'UPDATE') or Contains(@Message, 'INSERT')"
}
}
]
}
]
}
}
Part of program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder
.UseStartup<Startup>()
.CaptureStartupErrors(true)
.UseSetting("detailedErrors", "true")
.ConfigureAppConfiguration(config => {
config.AddJsonFile("appsettings.Local.json", optional: true);
});
}).UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
);
Part of startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider, ILoggerFactory loggerFactory) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
} else {
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
}
app.UseHsts();
loggerFactory.AddSerilog();
Part of context file
public class FristentoolContext : DbContext {
private readonly ILoggerFactory _loggerFactory;
public FristentoolContext(DbContextOptions<FristentoolContext> options, ILoggerFactory loggerFactory)
: base(options) {
_loggerFactory = loggerFactory;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseLoggerFactory(_loggerFactory);
}
Logging to the file is working but without any filter.
The more i try to get information from internet, the dizzier i get. There always seems to be 10 approaches to solve 1 problem, so any help is appreciated.
Thanks in advance Matt