C# EF Core 3.1的过滤Serilog输出
我在筛选asp.net core 3.1应用程序中serilog的输出时遇到问题 以下是appsettings.json中serilog配置的一部分:C# EF Core 3.1的过滤Serilog输出,c#,.net-core,entity-framework-core,serilog,C#,.net Core,Entity Framework Core,Serilog,我在筛选asp.net core 3.1应用程序中serilog的输出时遇到问题 以下是appsettings.json中serilog配置的一部分: "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.MSSqlServer", "Seri
"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')"
}
}
]
}
]
}
}
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)
);
上下文文件的一部分
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);
}
公共类FristentoolContext:DbContext{
私人只读iLogger工厂(loggerFactory);
公共FristentToolContext(DbContextOptions选项,iLogger工厂loggerFactory)
:基本(选项){
_loggerFactory=loggerFactory;
}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder){
选项Builder.UseLoggerFactory(_loggerFactory);
}
登录到该文件正在工作,但没有任何筛选器
我越想从互联网上获取信息,我就越感到头晕目眩。
似乎总是有10种方法来解决一个问题,所以任何帮助都是非常感谢的
提前谢谢
Matt您好,我对serilog也有问题,您能稍微描述一下您想要实现的目标吗?什么过滤器?我尝试只过滤数据库插入和更新命令,正如您在appsettings.json中看到的那样
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);
}