gpt4 book ai didi

c# - Serilog 在发布 ASP.NET Core 时不记录

转载 作者:行者123 更新时间:2023-11-30 21:30:37 24 4
gpt4 key购买 nike

我将 Serilog 配置为在具有 ASP.NET 核心(运行 Core 2.1)的 WebApi 上同时写入 MSSQL 表和文件(以尝试确定发生了什么。)。

我在我的 startup.cs 中添加 Serilog 日志记录,如下所示;

public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var log = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.MSSqlServer(
DbGlobals.DevDatabase, "Logs", schemaName:DbGlobals.SchemaName)
.WriteTo.File("Logs\\Serilog\\log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();

loggerFactory.AddSerilog(log);

其中 DbGlobals.DevDatbaseDbglobals.SchemaName 是从配置中读取的字符串。

更新供引用,这些值是;

DbGlobals.Schema = "MySchema";
DbGlobals.DevDatabase = "Data Source=xx.xx.xx.xx;Initial Catalog=DevDatabase;Integrated Security=False;Persist Security Info=False;User ID=LOGIN;Password=PASSWORD;MultipleActiveResultSets=true;";

当使用 IIS Express 在本地运行并且在 debugrelease 配置下时,两个日志记录功能都可以正常工作。因此,例如在我的 Controller 中;

public class ReviewPublicController : Controller
{
private readonly IReviewService _service;
private readonly IMapper _mapper;
private readonly IMailService _mailService;
private readonly ILogger _logger;

public ReviewController(
IReviewService service,
ILogger<ReviewController> logger)
{
_service = service;
_logger = logger;
}

[HttpPost]
[ProducesResponseType(typeof(Review), 201)]
[Route("")]
public async Task<IActionResult> Post([FromBody]ReviewPostModel model)
{
_logger.LogDebug("Posting Review");

...

return Ok();
}

所以本地“发布评论”被写入我的文件和 DbSchema。

但是,当我发布到我的服务器时,上面的“发布评论”条目也没有写入。

两者似乎都在工作,因为信息条目正在从 EF 和路由等添加,但当我专门尝试编写条目时却没有?

谁能告诉我这可能是什么问题?

当前的 nuget 版本是;

Serilog 2.7.1
Serilog.AspNetCore 2.1.1
Serilog.Sinks.MSSqlServer 5.1.2
Serilog.Sinks.File 4.0.0

此外,我的 appsettings.json 中有以下内容;

  "Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Release": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}

最佳答案

更新

如文档中所示:

Default Level - if no MinimumLevel is specified, then Information level events and higher will be processed.

所以基本上,您的配置似乎无效或被覆盖。参见:https://github.com/serilog/serilog/wiki/Configuration-Basics


LogDebugRelease 构建中默认禁用,这可能是您发布的内容。

请试试

_logger.LogInformation("Posting Review");

关于c# - Serilog 在发布 ASP.NET Core 时不记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com