认识.NET 日志系统
认识.NET 日志系统
基本概念
- 日志级别:Trace<Debug<Information<Waring<Error<Critical
- 日志提供者(LoggingProvider):把日志输出控制台、文件、数据库等。
- .NET的日志非常灵活,对于业务代码只要注入日志对象记录日志即可,具体哪些日志输出到哪里、什么样的格式、是否输出等都有配置或者初始化代码决定。
列子:输出到控制台
-
NuGet:Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Console。
-
DI注入:
services.AddLogging(logbuilder=>{ logBuilder.AddConsole() //可多个Provider })
-
需要记录日志的代码,注入ILogger
即可,T一般就用当前类,这个类的名字会输出到日志,方便定位错误,然后调用LogInformation()、LogError等方法输入不同级别的日志,还支持输出异常对象。
代码
Program类
using LogginDemo1;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
//用于注册依赖注入
ServiceCollection services = new ServiceCollection();
services.AddLogging(logBuilder =>
{
logBuilder.AddConsole();
});
services.AddScoped<Test1>();
using var sp = services.BuildServiceProvider();
var test1 = sp.GetRequiredService<Test1>();
test1.Test();
Test类
ILogger
using Microsoft.Extensions.Logging;
namespace LogginDemo1;
public class Test1
{
private readonly ILogger<Test1> _logger;
public Test1(ILogger<Test1> logger)
{
_logger = logger;
}
public void Test()
{
_logger.LogDebug("开始执行数据库同步");
_logger.LogDebug("连接数据库成功");
_logger.LogWarning("查找数据失败,重试第一次");
_logger.LogWarning("查找数据失败,重试第二次");
_logger.LogError("查找数据最终失败");
}
}
打印效果
LogDebug级别太低,默认不输出,如果需要显示Debug信息,则需要进一步配置。
services.AddLogging(logBuilder =>
{
logBuilder.AddConsole();
logBuilder.SetMinimumLevel(LogLevel.Trace); //设置最低级别
});
异常处理
可以直接传入ex对象,错误信息将会打印出来。
try
{
File.ReadAllText("A:/1.txt");
_logger.LogDebug("读取文件成功");
}
catch (Exception ex)
{
_logger.LogError(ex,"读取文件失败");
}
参考链接
- 【.NET 6教程,.Net Core 2022视频教程,杨中科主讲】 https://www.bilibili.com/video/BV1pK41137He/?p=46&share_source=copy_web&vd_source=fce337a51d11a67781404c67ec0b5084
每日一道面试题
简述 private、 protected、 public、 internal 修饰符的访问权限。
答 .
- private : 私有成员, 在类的内部才可以访问。
- protected : 保护成员,该类内部和继承类中可以访问。
- public : 公共成员,完全公开,没有访问限制。
- internal: 在同一命名空间内可以访问。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析