And*_*nov 5 c# logging nlog serilog
可以像这样配置 NLog:
<rules>
<logger name="Microsoft.EntityFrameworkCore.*" minlevel="Trace" writeTo="file-ef" final="true" />
<logger name="Microsoft.*" minlevel="Trace" writeTo="file-http,console" final="true" />
<logger name="*" minlevel="Trace" writeTo="file,console" />
</rules>
Run Code Online (Sandbox Code Playgroud)
该final关键字的规则允许使用单独的目标的可能性:
Microsoft.EntityFrameworkCore.* 记录员Microsoft.*记录器配置简单且合乎逻辑,我可以轻松添加另一个条件,而无需修改所有其他规则。
使用 Serilog 做同样的事情,我必须编写以下代码:
const string format = "[{Timestamp:HH:mm:ss.fff} {ThreadId} {Level:u3}] {Message:lj} [{SourceContext}] {NewLine}{Exception}";
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.FromLogContext()
.Enrich.WithThreadId()
.WriteTo.Console(outputTemplate: format)
.WriteTo.Logger(cfg => cfg
.Filter.ByIncludingOnly(Matching.FromSource("Microsoft.AspNetCore"))
.WriteTo.RollingFile(@"logs\{Date}.http.log", outputTemplate: format, retainedFileCountLimit: null, buffered: true))
.WriteTo.Logger(cfg => cfg
.Filter.ByIncludingOnly(Matching.FromSource("Microsoft.EntityFrameworkCore"))
.WriteTo.RollingFile(@"logs\{Date}.ef.log", outputTemplate: format, retainedFileCountLimit: null, buffered: true))
.WriteTo.Logger(cfg => cfg.Filter
.ByExcluding(Matching.FromSource("Microsoft"))
.WriteTo.RollingFile(@"logs\{Date}.log", outputTemplate: format, retainedFileCountLimit: null, buffered: true))
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
要添加另一个条件,我必须将其从所有其他过滤器中排除。
问题:我是否遗漏了什么,或者如果匹配其他规则,没有简单的方法可以跳过其他规则?
这并不是 Serilog 的 API 特别强大的场景,但Serilog.Sinks.Map涵盖了这种情况。
// Install-Package Serilog.Sinks.Map -Pre
var isAsp = Matching.FromSource("Microsoft.AspNetCore");
var isEF = Matching.FromSource("Microsoft.EntityFrameworkCore");
var isMS = Matching.FromSource("Microsoft");
Log.Logger = new LoggerConfiguration()
.WriteTo.Map(le => isAsp(le) ? ".http" :
isEF(le) ? ".ef" :
!isMS(le) ? ".other" :
"",
(slug, wt) => wt.RollingFile($"logs\\{{Date}}{slug}.log"))
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |