【发布时间】:2019-06-05 03:30:42
【问题描述】:
我已将 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.DevDatbase 和Dbglobals.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 在本地运行并在 debug 和 release 配置下运行时,两个日志记录功能都可以正常工作。例如在我的控制器中;
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"
}
}
【问题讨论】:
-
请分享
DbGlobals.DevDatabase -
serilog 有 appsetting.json 吗?
-
好的我已经更新了,虽然不确定相关性,因为我可以确认它连接到数据库。它还写入文件而不是我的日志输出
-
@Stefan
appsettings.json中有默认的日志记录部分,但是(除非我错了)上面没有考虑到这些? (这是我确认日志记录正常工作后的下一步)。我现在补充一下
标签: c# asp.net-core-webapi asp.net-core-2.1 serilog