我已经为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());
当我和这个配置在这两个文件夹这两个文件中生成日志,但文件包含既为EventLogItem
和ActivityLogItem
的条目。
文件:活动\登录-2016 ....登录
2016年12月29日17:36:47.610 01:00 [信息] EventLogItem {ID: 00000000-0000- 0000-0000-000000000000,时间戳:01/01/0001 00:00:00, 标题:“启动”,详细信息:“启动”} 2016-12-29 17:57:32.297
+01: 00 [信息] ActivityLogItem {Ip:“:: 1”,端口:“-1”,UserAgent:“Mozilla/5.0”,StartRequest:12/29/2016 17:57:29, EndRequest:12/29/2016 17:57:29}
文件:活动\日志-2016 ....登录
2016年12月29日17:36:47.610 01:00 [信息] EventLogItem {ID: 00000000-0000 -0000-0000-000000000000,时间戳:01/01/0001 00:00:00, 标题:“启动”,明细:“启动”} 2016-12-29 17:57:32.297
+01 :00 [Information] ActivityLogItem {Ip:“:: 1”,Port:“-1”,UserAgent:“Mozilla/5.0”,StartRequest:12/29/2016 17:57:29, EndRequest:12/29/2016 17:57:29}
我也在过滤器配置中尝试了ByIncludingOnly
,导致没有生成文件。
我的配置应该如何看起来像serilog会登录不同类型的文件?
编辑:
我也试了一下,现在加入了Matching.WithProperty
在我的课ActivityLogItem
我添加了一个新的属性:
public int EType {get;set;} = 1;
,并改变了配置
ByExcluding(Matching.WithProperty<int>("EType", p => p == 1)
这也被忽略。记录器在两个指定的文件中写入两个条目。
可能重复。尝试http://stackoverflow.com/a/38785632/3762855 –
@CroCorvino我已经尝试过,并试图用'Matching.WithProperty'也有相同的结果,记录器写入这两个文件 – Mark
尝试添加命名空间?要过滤的对象在不同的程序集中? –