首页 > 其他分享 >认识.NET 日志系统

认识.NET 日志系统

时间:2023-08-28 22:13:49浏览次数:39  
标签:logBuilder 认识 Extensions services using NET logger 日志

认识.NET 日志系统

基本概念

  1. 日志级别:Trace<Debug<Information<Waring<Error<Critical
  2. 日志提供者(LoggingProvider):把日志输出控制台、文件、数据库等。
  3. .NET的日志非常灵活,对于业务代码只要注入日志对象记录日志即可,具体哪些日志输出到哪里、什么样的格式、是否输出等都有配置或者初始化代码决定。

列子:输出到控制台

  1. NuGet:Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Console。

  2. DI注入:

    services.AddLogging(logbuilder=>{
    	logBuilder.AddConsole() //可多个Provider
    })
    
  3. 需要记录日志的代码,注入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("查找数据最终失败");
    }
}

打印效果

image

LogDebug级别太低,默认不输出,如果需要显示Debug信息,则需要进一步配置。

services.AddLogging(logBuilder =>
{
    logBuilder.AddConsole();
    logBuilder.SetMinimumLevel(LogLevel.Trace); //设置最低级别
});

image

异常处理

可以直接传入ex对象,错误信息将会打印出来。

try
{
    File.ReadAllText("A:/1.txt");
    _logger.LogDebug("读取文件成功");
}
catch (Exception ex)
{
    _logger.LogError(ex,"读取文件失败");
}

image

参考链接

每日一道面试题

简述 private、 protected、 public、 internal 修饰符的访问权限。

答 .

  1. private : 私有成员, 在类的内部才可以访问。
  2. protected : 保护成员,该类内部和继承类中可以访问。
  3. public : 公共成员,完全公开,没有访问限制。
  4. internal: 在同一命名空间内可以访问。

标签:logBuilder,认识,Extensions,services,using,NET,logger,日志
From: https://www.cnblogs.com/ZYPLJ/p/17663487.html

相关文章

  • netty WebSocket客户端实践
    在之前的Socket学习中,主要都是基于两个Socket客户端:WebSocket和Socket.IO。在做测试的时候也是基于WebSocket消息的发送和接收为主要测试对象。但是对于超多Socket连接没有涉及。在实践中会发现,这两个实现类都存在一个问题,为了维护1个Socket连接及其功能,通常需要创建多个线程。在......
  • 1.2 七个习惯成就高效能认识-以终为始与要事第一的习惯+人际领域成功的四大习惯
    一、以终为始与要事第一的习惯1.以终为始自我领导的原则确定目标需要原则2.要事原则计划自己不知道的事情选择做什么和不做什么先做什么,后做什么象限工作法(关注第二象限)二、人际领域成功的四大习惯1.双赢思维(和->利)2.知彼解己在开心的时候,传递负面信......
  • mysql日志追踪 / 数据恢复
    1.查看日志开启状态showvariableslike'log_%';2.查看日志文件列表showbinarylogs;或者showmasterlogs;3.查看当前日志index位置showmasterstatus;4.查看binlog关键事件showbinlogevents[IN'log_name'][FROMpos][LIMIT[offset,]row_c......
  • java.net.BindException: 地址已在使用
    java.net.BindException:地址已在使用,也可以说是端口被占用,通常出现在启动服务的时候。1、出错地方如图所示:2、执行netstat-alnp|grep81253、kill-9  1899   ......
  • Kubernetes编程—— 如何操作自定义资源
    如何操作自定义资源client-go为每种kubernetes内置资源提供对应的clientset和informer。那如果我们要监听和操作自定义资源对象,应该如何做呢?这里我们有两种方式:我理解意思是说:1、使用client-go提供的dynamicClient来操作自定义操作资源对象,当......
  • .net core Api获取所有Action以及注释内容
    有个项目需要获取项目内所有Action,并在凌晨定时任务跑完所有接口检查是否有接口报错,写了如下方法:///<summary>///获取Action注释///</summary>///<paramname="root"></param>///<paramname="method">方法</para......
  • .NET Core使用NPOI导出复杂Word详解
    前言:最近使用NPOI做了个导出Word文档的功能,关于使用.NETCore导出Word文档的方式有很多。最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架(并且现在已支持.NETCore,GitHub源码地址:https://github.com/tonyqus/npoi)。因为之前使用NP......
  • Netty 的 ChannelOption.SO_BACKLOG 知识点整理
    Netty的ChannelOption.SO_BACKLOG知识点整理 一个基于Netty的应用,在压力测试时,Socket请求数量一多,就发送失败,监测JVM内存大小比较稳定,猜测可能是ChannelOption.SO_BACKLOG这个配置导致的,设置的值是128。调整为1024后,连接失败的次数确实减少了一些,那么这个配置到......
  • 在.NET Framework中使用RocketMQ(阿里云版)实战【第一章】
    章节第一章:https://www.cnblogs.com/kimiliucn/p/17662052.html第二章:作者:西瓜程序猿主页传送门:https://www.cnblogs.com/kimiliucn/开发背景在开发某一个需求的时候,领导要求使用RocketMQ(阿里云版)作为消息队列。使用的版本是5.x,目前也已经没有4.x购买的入口了,所以只......
  • Nginx 日志分析
    常用分析命令1、根据访问IP统计UVawk'{print$1}'paycenteraccess.log|sort-n|uniq|wc-l2、查询访问最频繁的IP(前10)awk'{print$1}'/var/log/nginx/access.log|sort-n|uniq-c|sort-rn|head-n103、查看某一时间段的IP访问量(1-8点)awk'$4>="[25......