【发布时间】:2021-12-15 05:21:58
【问题描述】:
我正在使用 Serilog 登录我的控制台应用程序。我设置如下。
// Build configuration
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(ApplicationInfo.DataPath)
.AddJsonFile("appsettings.json", false, false)
.Build();
// Configure Serilog
string logFormat = "[{Timestamp:yyyy-MM-dd hh:mm:ss tt}][{Level:u3}] {Message:lj}{NewLine}{Exception}";
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.WriteTo.Console(LogEventLevel.Verbose, logFormat)
.WriteTo.File(ApplicationInfo.GetDataFileName("log"), LogEventLevel.Verbose, logFormat)
.CreateLogger();
AppHost = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddDbContext<TTApplicationDbContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
services.Configure<SftpSettings>(configuration.GetSection("FtpSettings"));
})
.UseSerilog()
.Build();
在我的 appsettings.json 文件中。
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
}
}
除了 SQL 查询明显显示在我的日志中之外,这一切正常,与实体框架异常有关。
我不想更改日志级别。我想记录这些错误。我只是不希望包含实际的 SQL 查询。这甚至不是安全问题。它们太冗长了,很难找到实际的错误。
在我的 ASP.NET Core 应用程序中,我必须添加以下行以在日志记录中启用 SQL 查询。
builder.EnableSensitiveDataLogging();
我的控制台应用程序需要与此相反。
注意:请不要太快将其标记为重复。我发现了类似的问题,但找不到任何直接回答我所问问题的问题。
【问题讨论】:
-
您可以添加环境检查是否调试,然后添加 builder.EnableSensitiveDataLogging() 如果它在发布或生产中它不会添加此信息,因为调试将只适用于开发人员!
-
@khaledDehia:你误读了这个问题。我不想要
EnableSensitiveDataLogging()。我想要相反的结果。 -
感谢澄清,顺便说一句,我的意思是开发环境不是调试,我的错
-
您使用哪些 Serilog 扩展?
-
@TiesonT.:这一切都在我的代码中。第二块是我配置 Serilog 的地方。
标签: c# .net asp.net-core .net-core serilog