日志(Logging)是枢纽的审计中心。没有日志,线上问题一来,你连“谁在什么时候经过哪个窗口”都不知道。
#注入日志器
public class CitizenService : ICitizenService
{
private readonly ILogger<CitizenService> _logger;
public CitizenService(ILogger<CitizenService> logger)
{
_logger = logger;
}
public Task<bool> ValidateAsync(string citizenId)
{
_logger.LogInformation("开始核验 citizenId={CitizenId}", citizenId);
return Task.FromResult(true);
}
}#日志要写成结构化,不要拼字符串
推荐:
_logger.LogInformation(
"办理证照成功,CitizenId={CitizenId}, PermitId={PermitId}",
citizenId,
permitId);不推荐:
_logger.LogInformation("办理证照成功: " + citizenId + ", " + permitId);前者更适合检索、聚合、告警和分析。
#日志在枢纽里的位置
请求进入 -> 记录入口日志
业务处理 -> 记录关键节点日志
异常发生 -> 记录错误日志
响应结束 -> 记录结果日志日志不是“为了看着热闹”,而是为了排障、审计、追踪、统计。