认识.NET 日志系统

认识.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: 在同一命名空间内可以访问。
posted @   妙妙屋(zy)  阅读(361)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
  1. 1 够爱(翻自 曾沛慈) 是我呀卡司宝贝
  2. 2 老人と海 ヨルシカ
  3. 3 生生世世爱 黄霄雲
  4. 4 希望有羽毛和翅膀 imzat
老人と海 - ヨルシカ
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : n-buna

作曲 : n-buna

编曲 : n-buna

靴紐が解けてる 木漏れ日は足を舐む

息を吸う音だけ聞こえてる

貴方は今立ち上がる 古びた椅子の上から

柔らかい麻の匂いがする

遥か遠くへ まだ遠くへ

遥か遠くへ まだ遠くへ

僕らは身体も脱ぎ去って

まだ遠くへ 雲も越えてまだ向こうへ

風に乗って

僕の想像力という重力の向こうへ

まだ遠くへ まだ遠くへ

海の方へ

靴紐が解けてる 蛇みたいに跳ね遊ぶ

靴紐が解けてる 蛇みたいに跳ね遊ぶ

貴方の靴が気になる

僕らは今歩き出す 潮風は肌を舐む

手を引かれるままの道

さぁまだ遠くへ まだ遠くへ

さぁまだ遠くへ まだ遠くへ

僕らはただの風になって

まだ遠くへ 雲も越えてまだ向こうへ

風に乗って 僕ら想像力という縛りを抜け出して

まだ遠くへ まだ遠くへ 海の方へ

靴紐が解けてる 僕はついにしゃがみ込む

靴紐が解けてる 僕はついにしゃがみ込む

鳥の鳴く声だけ聞こえてる

肩をそっと叩かれてようやく僕は気が付く

海がもう目の先にある

あぁまだ遠くへ まだ遠くへ

あぁまだ遠くへ まだ遠くへ

僕らは心だけになって

まだ遠くへ 海も越えてまだ向こうへ

風に乗って 僕の想像力という重力の向こうへ

まだ遠くへ まだ遠くへ

海の方へ

僕らは今靴を脱ぐ さざなみは足を舐む

僕らは今靴を脱ぐ さざなみは足を舐む

貴方の眼は遠くを見る

ライオンが戯れるアフリカの砂浜は

海のずっと向こうにある

点击右上角即可分享
微信分享提示