Trace < Debug < Information < Warning < Error < Critical
配置文件详细说明
属性详细说明
引用包
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console
Program.cs代码(.NET6创建的控制台程序)
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
ServiceCollection services = new();
services.AddLogging(logBulider => {
logBulider.AddConsole();
logBulider.SetMinimumLevel(LogLevel.Debug); //设置允许日志输出的最低级别为Debug
});
services.AddScoped<Test1>();
using (var sp = services.BuildServiceProvider())
{
var test1= sp.GetRequiredService<Test1>();
test1.Test();
}
* 新建Test1.cs类并写入代码
public class Test1
{
private readonly ILogger<Test1> logger;
public Test1(ILogger<Test1> _logger)
{
this.logger = _logger;
}
public void Test()
{
logger.LogDebug("开始执行数据库同步");
logger.LogDebug("连接数据库成功");
logger.LogWarning("查找数据失败,重试第一次");
logger.LogWarning("查找数据失败,重试第二次");
logger.LogError("查找数据最终失败");
}
}
注意:除非程序只部署到Windows系统下,否则不建议这样写日志
在标题1中稍作修改
引用包 Microsoft.Extensions.Logging.EventLog
新增代码 logBulider.AddEventLog();
nlog.config
官方提供的配置文件
Program.cs
builder.Services.AddLogging(logBulider => {
logBulider.AddConsole();
//logBulider.AddEventLog();
logBulider.AddNLog();
//logBulider.SetMinimumLevel(LogLevel.Debug); //设置允许日志输出的最低级别Debug
});
控制器
public class WeatherForecastController : ControllerBase
{
private readonly IConfiguration config;
public TestController(ILogger<TestController> logger)
{
this.logger = logger;
}
[HttpPost]
public JsonResult TestLog()
{
logger.LogInformation("测试Information");
logger.LogDebug("测试Debug");
logger.LogError("测试Error");
return new JsonResult("");
}
}
始终复制
logBulider.AddNLog();
nlog.config 配置
<targets>
<target name="database" xsi:type="Database" connectionstring="Server=.;Initial Catalog=cxlprod;Persist Security Info=False;User ID=DemoDB;Password=sa2008;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;">
<commandText>
insert into NLogInfo([Date],[origin],[Level],[Message]) values (DATEADD(HOUR, 8, GETDATE()), @origin, @logLevel, @message);
</commandText>
日志来源
<parameter name="@origin" layout="${callsite}" />
日志等级
<parameter name="@logLevel" layout="${level}" />
日志消息
<parameter name="@message" layout="${message}" />
</target>
</targets>
<rules>
<logger name="*" writeTo="database" />
</rules>
使用 final 属性 可以选择性的将日志存放到某个具体的.log中,不再往下执行
下面案例,当日志写入 sysServicesFile 中,final=true,执行完后,不会再往下执行
视频参考:杨中科,NET6教程 - P31依赖注入
视频参考:杨中科,NET6教程 - P45日志系统