我已经配置了Serilog日志记录,可以将记录写入MSSQL表和文件中(以尝试确定发生了什么情况)。这是在运行Core 2.1的ASP.NET Core WebApi中完成的。
我按照以下方式在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
。 - Derviş Kayımbaşıoğluappsettings.json
中有默认的日志记录部分,但是(除非我错了),根据上面的内容它并没有考虑到这些部分?(一旦我确认了日志记录正常工作,这将是我的下一步)。我现在会添加它。 - Matthew Flynn