分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了

前言

实际上,.NET Core 内部也内置了一套日志系统,它是一个轻量级的日志框架,用于记录应用程序的日志信息。

它提供了 ILogger 接口和 ILoggerProvider 接口,以及一组内置的日志提供程序(如 Console、Debug、EventSource 等),可以方便地进行日志记录和输出。

平时做一些测试或个人的研究,建议直接使用 .NET Core 自带的日志系统就可以了,方便快捷。

Step By Step 步骤

  1. 创建一个 .NET Core Console 项目

  2. 从 Nuget 安装以下包

    Microsoft.Extensions.Logging.Console

  3. 打开 Program.cs,编写日志记录代码,注意注释

    c# 复制代码
    // 1. 引用日志命名空间
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
    
    // 2. 创建依赖注入容器
    ServiceCollection services =new ServiceCollection();
    
    // 3. 注入输出到控制台的日志服务
    services.AddLogging(log => log.AddConsole());
    
    // 4. 使用
    using (var sp = services.BuildServiceProvider())
    {
    	// 使用 GetRequiredService 获取日志服务
    	// 输出日志的时候会把泛型类型 Program 输出,便于定位日志来自哪个类
    	// 注意,在注入ILogger服务的时候,不能使用非泛型的ILogger接口,否则是获取不到服务的。
    	var logger = sp.GetRequiredService<ILogger<Program>>();
    	logger.LogWarning("这是一条警告消息");
    	logger.LogError("这是一条错误消息");
    	string age = "abc";
    	logger.LogInformation("用户输入的年龄:{0}", age);
    	
    	//模拟操作失败,输出错误日志
    	try
    	{
    		int i = int.Parse(age);
    	}
    	catch (Exception ex)
    	{
    		logger.LogError(ex, "解析字符串为int失败");
    	}
    }
  4. 运行后就可以看到效果了

总结

  1. .NET Core 中自带的日志系统可以把日志记录到控制台、事件日志、调试窗口等地方,非常适合平时个人做测试或者代码研究
  2. .NET Core 中的日志提供了标准接口,允许开发人员编写第三方实现,使用第三方日志提供程序把日志记录到文件、日志服务器等地方。
  3. 常用的第三方日志提供程序有 Log4Net、NLog、Serilog,推荐使用 NLog 或者 Serilog,它们不仅使用简单,而且功能强大(可以看我之前的文章
  4. 在分布式环境下,最好采用集中式的日志服务器,各台服务器都把产生的日志写入日志服务器。集中式的日志服务器推荐使用 Exceptionless

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。

都看到这了,求个点赞、关注、在看三连呗,感谢支持。

相关推荐
FL16238631298 小时前
[C#][winform]基于yolov8的水表读数检测与识别系统C#源码+onnx模型+评估指标曲线+精美GUI界面
开发语言·yolo·c#
Jeremy爱编码13 小时前
实现 Trie (前缀树)
开发语言·c#
烛阴13 小时前
C# 正则表达式(4):分支与回溯引用
前端·正则表达式·c#
huluang18 小时前
Word文档批注智能克隆系统的设计与实现
开发语言·c#·word
kylezhao201919 小时前
C#上位机开发数据持久化:excel报表导入导出
开发语言·c#·excel
wangnaisheng21 小时前
【C#】RocketMQ、Redis的使用
c#
阿蒙Amon21 小时前
C#每日面试题-接口和抽象类的区别
开发语言·c#
ejjdhdjdjdjdjjsl1 天前
深入理解C#泛型:从方法到约束
c#
bugcome_com1 天前
WPF 核心布局控件全解析:从 Grid 到 UniformGrid 的实战应用
c#·wpf
wangnaisheng1 天前
Intel IPP 图像处理相关函数
c++·c#·图像