项目框架构建之5:日志的构建

本文介绍了如何使用Microsoft.Extensions.Logging构建通用日志模块,实现与NLog的集成,并通过Xejen.Logger项目实现在不同场景下的日志管理。重点讲解了关键组件如ILogger、LoggerFactory和LoggerProvider的使用方法。
摘要由CSDN通过智能技术生成

本文是“项目框架构建”系列之5,本文介绍日志的构建。

为了做出通用的公共日志模块,我们需要使用微软的Microsoft.Extensions.Logging日志管理模块,该模块提供了灵活且可扩展的日志记录机制,它为整个.net应用程序提供了一致统一的接口,而且不受具体日志库的限制。

通过使用这个库,你可以将你的应用程序与不同的日志库集成,而不必修改应用程序的核心代码,它可以集成你想要的任何常见库,如NLog、log4net等。


以下是 Microsoft.Extensions.Logging 的一些关键概念和组件:

ILogger: ILogger 是核心接口,用于在应用程序中进行日志记录。应用程序代码应该通过 ILogger 进行日志记录,而不是直接依赖于具体的日志库。

ILoggerFactory: ILoggerFactory 是用于创建 ILogger 实例的工厂。每个应用程序只需一个 ILoggerFactory 实例。在应用程序启动时,你可以配置 ILoggerFactory,并将其注入到需要日志记录的组件中。

LoggerProvider: LoggerProvider 是一个实现,它负责创建 ILogger 实例。在 ILoggerFactory 中可以注册一个或多个 LoggerProvider,每个都与一个特定的日志库(例如,Console、Debug、NLog、Serilog等)相关联。

Log Levels: Microsoft.Extensions.Logging 定义了不同的日志级别,包括 Trace、Debug、Information、Warning、Error 和 Critical。你可以根据应用程序的需求选择适当的日志级别。

日志信息(Log Information): 每个日志记录都包含一个消息和可选的参数。这些信息可以帮助你更好地理解日志的上下文。

Provider Registration: 在应用程序中,你需要注册一个或多个 LoggerProvider,以便日志信息能够被输出到特定的目标(例如控制台、文件、数据库等)。


好的,了解了Microsoft.Extensions.Logging日志库,我们先在Xejen.Logger项目中,做一些简单的工作。
Xejen.Logger项目的工作目的是为了实现日志抽象,它不应依赖于具体的实现库,具体库由用户来决定,这样用户就可以实现日志自由

为了集成NLog的实现,我们新开一个项目Xejen.Logger.NLog来实现日志管理

1.创建ILoggerManager.cs接口,用于管理日志。


2.创建ILoggerManager.cs接口的具体实现,他具体使用哪个日志工厂,将由TLoggerFactory日志工厂来决定。

3.提供一个开放日志管理接口的扩展


为了应对一些测试环境以及无依赖注入情况下又想使用日志的情况,我们加上一个日志扩展,以便让那些场景可以使用


4.使用NLog实现日志管理


构建一个NLogManager类,来实现LoggerManager类,这样就简单集成了NLog,用户想用NLog的时候,只要创建此对象的实例,就可以随心所欲的使用NLog了。
同理,其它的日志管理库,也可以依样进行。

日志模块是很简单的模块,他将NLog集成到了Microsoft.Extensions.Logging中,都是使用既有的Api,这都不是个什么事。

最后日志项目成型如下:

祝您用餐愉快。

1-3-5 $ 3-5-5-4 带着田螺回四堡 3-5-2-4

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值