我编写了以下行来在C#/ WPF应用程序中创建我的记录器,但Debug消息不会显示在日志中.我错过了什么?我使用的是serilog.sinks.file版本4.0.0.发布版本生成信息级事件,但调试版本不会生成调试消息.我已确认已定义DEBUG符号,并且我已经调试以确认该级别实际上已设置为调试.
LogEventLevel level = LogEventLevel.Information;
#if DEBUG
level = LogEventLevel.Debug;
#endif
UsageLogger = new LoggerConfiguration()
.Enrich.With(new ThreadIdEnricher())
.WriteTo.File("UsageLogging.txt", restrictedToMinimumLevel: level, outputTemplate: LogTemplate, rollingInterval: RollingInterval.Day)
.Enrich.With(new ThreadIdEnricher())
.WriteTo.Console(restrictedToMinimumLevel: level, outputTemplate: LogTemplate)
.Enrich.With(new ThreadIdEnricher())
.CreateLogger();
}
Run Code Online (Sandbox Code Playgroud)
我认为需要这样......
LogEventLevel level = LogEventLevel.Information;
#if DEBUG
level = LogEventLevel.Debug;
#endif
UsageLogger = new LoggerConfiguration()
#if DEBUG
.MinimumLevel.Debug()
#endif
.Enrich.With(new ThreadIdEnricher())
.WriteTo.File("UsageLogging.txt", restrictedToMinimumLevel: level, outputTemplate: LogTemplate, rollingInterval: RollingInterval.Day)
.Enrich.With(new ThreadIdEnricher())
.WriteTo.Console(restrictedToMinimumLevel: level, outputTemplate: LogTemplate)
.Enrich.With(new ThreadIdEnricher())
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
我的是一个 asp.net core 2.0 项目,从 appsetting.Development.json 文件中读取配置
在 Startup.cs 文件中,首先需要按如下方式创建记录器。
var seriLogger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.ReadFrom.Configuration(configuration)
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
这里需要注意的是,最低级别设置为 Verbose。笔记
.MinimumLevel.Verbose()
Run Code Online (Sandbox Code Playgroud)
接下来 appsettings.Developement.json 将如下所示。
{
"ConnectionStrings": {
"HPlusSportsConnection": "Data Source=DESKTOP-Feast\\sqlexpress;Initial Catalog=H_Plus_Sports;Persist Security Info=True;User ID=fakeUserId;Password=fakePassword"
},
"Serilog": {
"WriteTo": [
{
"Name": "Seq",
"Args": {
"restrictedToMinimumLevel": "Debug",
"serverUrl": "http://localhost:5341"
}
},
{
"Name": "File",
"Args": {
"restrictedToMinimumLevel": "Verbose",
"path": "log.txt",
"outputTemplate": "Will be logged {Timestamp:yyyy-MMM-dd HH:mm:ss}|{TenantName}|{RequestId}|{SourceContext}|{Level:u3}|{Message:lj}{NewLine}{Exception}",
"rollingInterval": "Day"
}
}
]},}
Run Code Online (Sandbox Code Playgroud)
所以我有多个接收器,每个接收器都有自己的级别。sink seq 有 Debug,所以 debug 及以上会被记录到 seq sink。对于文本文件,级别为 Verbose,以便有效地记录所有内容。
再次强调,
.MinimumLevel.Verbose()
Run Code Online (Sandbox Code Playgroud)
在这里很重要。如果您省略或注释掉它,那么即使您将它们配置为详细或调试,文件和 seq 也将仅具有信息和以上的日志。那是因为最低级别默认为“信息”。
| 归档时间: |
|
| 查看次数: |
3696 次 |
| 最近记录: |