.net 日志ILogger基本使用
最基本的使用,输出一些东西:
在Controller中
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace NetTest.Controllers
{
[ApiController]
[Route("[controller]")]
public class LogTestController : ControllerBase
{
// 从容器中获取ILogger实例
private readonly ILogger<LogTestController> _logger;
public LogTestController(ILogger<LogTestController> logger)
{
_logger = logger;
}
// 使用ILogger
[HttpGet("log")]
public void Log()
{
_logger.LogInformation("Info");
_logger.LogError("Error");
_logger.LogWarning("Warning");
}
}
}
运行项目,访问相关的Action,发现控制台打印了日志
可以看到,控制台输出了内容
并且,我们发现这些内容具有不同的颜色,这就涉及到了日志级别的概念
日志级别LogLevel:
要弄清楚日志级别,首先要明白日志为什么要分级?
举个例子,你的女朋友很爱说话,整天说这说那,说些有的没的,这些信息都不重要,因此你有的听了有的不听,因为你认为这些信息并不是什么重要的信息,听不听都没什么关系
但是突然有一天,你女朋友跟你提分手了,你意识到这是一个危险信息,因此你能很认真地听
日志也是如此,大多数日志信息是不那么重要的,它只是记录了一下程序内部发生了什么(例如:“XXX登录了”),你知不知道其实对程序本身并没有什么影响
但是突然程序运行时发生异常了,它产生了一个异常信息,这就需要你引起高度重视了
因此日志级别就是用来区分信息严重程度的一个东西
.net 默认的日志提供程序将日志级别划分为以下几种:(严重程度由低到高)
设置日志级别
appsetting.json中默认设置了日志级别为“Default”:“Information”
这意味着严重程度低于“Information”级别的日志将不被输出
我们如果把它改为“Warning”,则严重程度低于“Warning”级别的日志将不被输出,这意味着“Information”级别的日志将不被输出
除了在Default中设置日志级别外,我们还可以指定某个强类型的日志级别,例如我们希望ILogger<LogTestController> _logger的日志级别为Warning,我们可以这样修改配置(类需要指定全名):