我编写了以下行以在 C#/WPF 应用程序中创建我的记录器,但调试消息未显示在日志中。 我错过了什么? 我正在使用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();
}
它必须是这个...
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();
Mine是一个 asp.net 核心2.0项目,并从appset读取配置。开发.json 文件
在 Startup.cs 文件中,首先需要按如下方式创建记录器。
var seriLogger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.ReadFrom.Configuration(configuration)
.CreateLogger();
这里需要注意的是,最低级别设置为"详细"。注意
.MinimumLevel.Verbose()
接下来是应用设置。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 具有调试,因此调试及更高版本将记录到 seq 接收器。对于文本文件,级别是详细,有效地记录所有内容。
再次强调,
.MinimumLevel.Verbose()
在这里很重要。如果您省略或注释掉它,则文件和 seq 将仅包含来自信息和上面的日志,即使您将它们配置为详细或调试。这是因为默认情况下,最低级别是"信息"。
在应用设置中将Default
从information
更改为debug
喜欢这个:
"Logging": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
}