我对 API 版本控制还很陌生。我正在使用 ASP.NET 6.0 和 Serilog 写入日志文件。
现在我已经实现了版本控制,我想让应用程序的 v1.0 写入“Logs/V1.0/logfile.json”,v2.0 写入“Logs/v2.0/logfile.json”。
我可以毫无问题地在我的控制器中获取版本号“1.0”或“2.0”。
[ApiController]
[Route("/v{version:apiVersion}/[controller]")]
[ApiVersion("2.0")]
public class MainController : Controller
[HttpGet]
public void MyMethod(ApiVersion version)
{
_logger.LogInformation("APIVersion: {ApiVersion}", version);
}
}
我可以看到 Serilog 将在日志的属性中保存这个“ApiVersion”变量。
"Properties":{
"ApiVersion":"2.0",
"RequestPath":"/v2.0/Main/MyMethod",
...
那么我如何将所有这些放在一起让 Serilog 将日志保存在不同的文件位置?
我认为它可能与 Program.cs 中的“Log.Logger = new LoggerConfiguration()”有关?我阅读了各种选项,例如 .WriteTo.Map 或 Write.To.Conditional ?
一切似乎都与将不同级别(信息、警告、警报)的日志写入不同位置有关。我也不知道这个设置的最佳实践是什么。
感谢任何帮助!