Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用忽略的筛选器登录多个文件_C#_Serilog - Fatal编程技术网

C# 使用忽略的筛选器登录多个文件

C# 使用忽略的筛选器登录多个文件,c#,serilog,C#,Serilog,我为serilogLoggerConfiguration定义了两个过滤器 这两个都是RollingFile记录器,根据在另一个文件夹中的日志文件中写入的类型而定 var activityPath = @"C:\temp\Activities\log-{Date}.log"; var eventsPath = @"C:\temp\Events\log-{Date}.log"; loggerConfig.WriteTo.Logger( lc =>

我为serilog
LoggerConfiguration定义了两个过滤器
这两个都是RollingFile记录器,根据在另一个文件夹中的日志文件中写入的类型而定

var activityPath = @"C:\temp\Activities\log-{Date}.log";

var eventsPath = @"C:\temp\Events\log-{Date}.log";

loggerConfig.WriteTo.Logger(
                    lc =>
                        lc.Filter.ByExcluding(Matching.FromSource<EventLogItem>())
                            .WriteTo.RollingFile(pathFormat: eventsPath,
                                fileSizeLimitBytes: 1073741824,
                                retainedFileCountLimit: 31));
loggerConfig.WriteTo.Logger(
                    lc =>
                        lc.Filter.ByExcluding(Matching.FromSource<ActivityLogItem>())
                            .WriteTo.RollingFile(pathFormat: activityPath,
                                fileSizeLimitBytes: 1073741824,
                                retainedFileCountLimit: 31));

_logger.Information("{@ActivityLogItem}", new ActivityLogItem());
_logger.Information("{@EventLogItem}", new EventLogItem());
并将配置更改为

ByExcluding(Matching.WithProperty<int>("EType", p => p == 1)
ByExcluding(匹配.WithProperty(“EType”,p=>p==1)
这也将被忽略。记录器将这两个条目写入指定的两个文件。

FromSource()
筛选器识别特定记录器引发的事件:

_logger.ForContext<ActivityLogItem>()
     .Information("This would be picked up by the filters");
设置筛选有几种方法;如果您可以使用
ForContext()
方法,我建议您使用这种方法。或者,如果您不想修改日志记录语句,请尝试:

Filter.ByExcluding(evt => evt.Properties.TryGetValue("ActivityLogItem"));

可能重复。try@CiroCorvino我已经尝试过,也尝试过使用
匹配。WithProperty
也有相同的结果,记录器写入两个文件尝试添加命名空间?要筛选的对象在不同的程序集中?
_logger.Information("{EType} {@ActivityLogItem}", 1, new ActivityLogItem());
Filter.ByExcluding(evt => evt.Properties.TryGetValue("ActivityLogItem"));