我编写了以下行来在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();
}
答案 0 :(得分:8)
我认为需要这样......
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();
答案 1 :(得分:0)
我的是asp.net核心2.0项目,正在从appsetting.Development.json文件读取配置
首先,在Startup.cs文件中,按如下所示创建记录器。
var seriLogger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.ReadFrom.Configuration(configuration)
.CreateLogger();
请务必注意,最低级别设置为“详细”。注意
.MinimumLevel.Verbose()
接下来,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"
}
}
]},}
所以我有多个接收器,每个接收器都有自己的级别。接收器Seq具有调试功能,因此debug及以上版本将记录到seq接收器中。对于文本文件,级别为“详细”,以有效记录所有内容。
再次强调,
.MinimumLevel.Verbose()
在这里很重要。如果您省略或注释掉了,即使您将文件和seq配置为详细信息或调试信息,文件和seq也将仅包含来自信息及以上信息的日志。那是因为最低级别默认情况下是“信息”。