我已經爲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
嘗試添加命名空間?要過濾的對象在不同的程序集中? –