首页 > 其他分享 >.NET Core 里的优秀日志框架Serilog、NLog、Log4Net、Microsoft.Extensions.Logging

.NET Core 里的优秀日志框架Serilog、NLog、Log4Net、Microsoft.Extensions.Logging

时间:2024-08-18 09:53:49浏览次数:9  
标签:Log4Net Core Logging Serilog NLog Extensions 日志 NET

在.NET Core中,Serilog、NLog、Log4Net、Microsoft.Extensions.Logging都是流行的日志记录框架,它们各自具有不同的特点和用法。以下是对这些日志框架使用方法的概述:

目录

1. Serilog

2. NLog

3. Log4Net

4. Microsoft.Extensions.Logging


1. Serilog

特点

  • 可配置性强,支持链式调用。
  • 可以自定义日志格式和输出方式。

使用方法

  1. 安装NuGet包
    • 使用NuGet包管理器安装SerilogSerilog.Sinks.Console(或其他所需的Sinks,如文件、数据库等)。
  2. 配置Serilog
    • 在程序入口(如Program.cs中的Main方法或.NET Core项目的Startup.cs中)配置Serilog。
    • 使用LoggerConfiguration类配置日志级别、输出格式和Sinks。
  3. 记录日志
    • 使用Log.Information()Log.Warning()Log.Error()等方法记录日志。

示例代码(基于.NET Core 6.0及以上版本):

using Serilog;  
  
class Program  
{  
    public static void Main(string[] args)  
    {  
        Log.Logger = new LoggerConfiguration()  
            .MinimumLevel.Debug()  
            .WriteTo.Console()  
            .CreateLogger();  
  
        Log.Information("Hello, Serilog!");  
  
        // 确保在应用程序退出前刷新并停止内部定时器和线程  
        Log.CloseAndFlush();  
    }  
}

2. NLog

特点

  • 配置简单,易于使用。
  • 支持多种输出方式,包括控制台、文件、数据库等。

使用方法

  1. 安装NuGet包
    • 使用NuGet包管理器安装NLogNLog.Web.AspNetCore(对于ASP.NET Core项目)。
  2. 添加NLog配置文件(如nlog.config):
    • 在项目根目录下创建nlog.config文件,并配置日志目标(targets)和规则(rules)。
  3. 配置NLog
    • Program.cs中配置NLog,通常是通过NLogBuilder.ConfigureNLog("nlog.config")方法。
  4. 记录日志
    • 使用ILogger接口或NLogLogger类记录日志。

示例代码(基于ASP.NET Core):

using NLog.Web;  
  
public class Program  
{  
    public static void Main(string[] args)  
    {  
        var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();  
  
        // ... 其他代码  
  
        logger.Info("Hello, NLog!");  
  
        // 确保在应用程序退出时正确关闭NLog  
        NLog.LogManager.Shutdown();  
    }  
}

3. Log4Net

特点

  • 稳定性高,配置灵活。
  • 支持多种输出方式,包括控制台、文件、数据库等。

使用方法

  1. 安装NuGet包
    • 使用NuGet包管理器安装log4net
  2. 添加配置文件(如log4net.config):
    • 在项目根目录下创建log4net.config文件,并配置appender、logger等。
  3. 配置Log4Net
    • 在程序入口或全局位置使用XmlConfigurator.Configure方法加载配置文件。
  4. 记录日志
    • 使用ILog接口记录日志。

示例代码(基于.NET Core):

using log4net;  
using log4net.Config;  
  
public class Program  
{  
    private static readonly ILog logger = LogManager.GetLogger(typeof(Program));  
  
    public static void Main(string[] args)  
    {  
        XmlConfigurator.Configure(new FileInfo("log4net.config"));  
  
        // ... 其他代码  
  
        logger.Info("Hello, Log4Net!");  
    }  
}

4. Microsoft.Extensions.Logging

特点

  • Microsoft.Extensions.Logging 是 .NET Core 自带的日志框架,它提供了一个通用的日志记录接口,允许开发者通过不同的日志提供者(如控制台、文件、第三方库等)来实现日志记录。
  • 它易于集成,并支持 .NET Core 的依赖注入框架。

使用方法

  1. 安装 NuGet 包
    • 对于 Microsoft.Extensions.Logging 本身,通常不需要单独安装 NuGet 包,因为它已经包含在 .NET Core 的基础库中。
    • 如果需要使用特定的日志提供者(如控制台、文件等),则需要安装相应的 NuGet 包,如 Microsoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Logging.File(注意:Microsoft.Extensions.Logging.File 并不是官方直接提供的包,通常需要使用第三方库如 Serilog.Sinks.File 或 NLog 的文件目标来实现文件日志记录)。
  2. 配置日志提供者
    • 在应用程序的启动过程中,通常是在 Program.cs 文件的 Main 方法或 CreateHostBuilder 方法中配置日志提供者。
    • 使用 LoggerFactory 类创建日志工厂,并通过其 Add 方法添加所需的日志提供者。例如,要添加控制台日志提供者,可以使用 builder.AddConsole()
  3. 记录日志
    • 使用 ILogger<TCategoryName> 接口的实例来记录日志。通常,这个实例是通过依赖注入获取的,或者是在需要的地方通过 LoggerFactory 创建的。
    • 使用 LogInformationLogWarningLogError 等方法记录不同级别的日志。

示例代码(基于 .NET Core 6.0 及以上版本,使用控制台日志提供者):

using Microsoft.Extensions.Logging;  
  
var loggerFactory = LoggerFactory.Create(builder =>  
{  
    builder  
        .AddFilter((category, level) =>  
            category == "MyCategory" && level >= LogLevel.Information) // 可选:添加过滤器  
        .AddConsole(); // 添加控制台日志提供者  
});  
  
var logger = loggerFactory.CreateLogger<Program>();  
  
logger.LogInformation("Hello, this is an informational message!");  
logger.LogWarning("This is a warning message.");  
logger.LogError("Oops! Something went wrong.");

注意

  • 在实际应用中,你可能会使用 .NET Core 的依赖注入框架来自动管理 ILogger<TCategoryName> 的实例,而不是手动创建它们。
  • Microsoft.Extensions.Logging 允许你通过配置文件(如 appsettings.json)来配置日志提供者,但这通常是通过集成第三方日志库(如 Serilog、NLog)来实现的,因为 Microsoft.Extensions.Logging 本身并不直接支持从配置文件中读取配置。
  • 如果你需要更复杂的日志记录功能(如日志轮转、日志压缩、异步日志记录等),你可能需要选择 Serilog、NLog 或 Log4Net 等更高级的日志框架。

标签:Log4Net,Core,Logging,Serilog,NLog,Extensions,日志,NET
From: https://blog.csdn.net/x1234w4321/article/details/140817830

相关文章

  • 在EFCore中多对多关系的设计数据插入与查询
    学生类StudentpublicclassStudent{publicintId{get;set;}publicstringName{get;set;}publicintAge{get;set;}publicList<Teacher>Teachers{get;set;}=newList<Teacher>();}老师类TeacherpublicclassTeacher{......
  • Asp.net core SignalR + Vue
    简介:ASP.NETSignalR是一个ASP.NET下的类库,可以在ASP.NET的Web项目中实现实时通信。本文主要讲述如何在Vue.js中使用SignalR,以及断开重连。知识点:前端SignalR的安装如何设置自动重新连接的次数SignalR有关连接的函数自动重连全部失败后,定时重连ASP.NETCORESig......
  • asp.net core 调用wps实现word转pdf
    安装wpshttps://www.wps.cn/创建.netcore控制项目添加com引用,搜索wps准备word,名字叫001.docxword转pdf编写代码namespaceWPSStu01{internalclassProgram{staticvoidMain(string[]args){Console.WriteLine("......
  • EFCore中自引用的实体类设计
    案例:以部门(为主)-----部门下面又分1部、2部、3部等,1部下面又分为1组,2组,3组等这种结构像这样的设计类型应该用自引用来设计下面用用代码来实现://////Departmentclass///publicclassDepartment{//////部门Id///publicintId{get;set;}//////部门名称Nam......
  • .net core 微服务间通信 消息总线更新 利用GRPC restful 优缺点
     在.NETCore微服务架构中,微服务间的通信是一个核心问题,而消息总线的更新则涉及到微服务间的动态配置和状态同步。关于使用gRPC和RESTfulAPI在微服务间通信的优缺点,以及它们在消息总线更新中的应用,可以从以下几个方面进行详细分析:一、gRPC的优缺点优点:高效性:gRPC使用Prot......
  • easy-es:java: 程序包org.dromara.easyes.core.core不存在
    问题描述:运行easy-es官网的springboot集成demo时报错:java:程序包org.dromara.easyes.core.core不存在问题分析:Ctrl+鼠标左键进入org.dromara.easyes.core下,查找发现BaseEsMapper在org.dromara.easyes.core.kernel目录下,而非org.dromara.easyes.core.core下解决方法......
  • .NET CORE在publish的时候去掉pdb
     默认设置下,publish出来的文件其实是包含很多的pdb文件,即使你过程当中选择的是“输出为单一文件”: 想要设置为publish的时候不输出,有三种方法(推荐第三种):1.直接改项目的配置文件的配置:2.直接改Web项目的publish的文件的配置:在最终的Startup的项目(比如是Web)的publish配......
  • 《帕拉丁装甲》启动受阻:vgcore.dll兼容性问题终极解决策略
    解决《帕拉丁装甲》游戏中遇到的vgcore.dll兼容性问题,可以尝试以下策略来确保游戏顺利启动:1.运行兼容性模式:•右键点击《帕拉丁装甲》的快捷方式或可执行文件,选择“属性”。•切换到“兼容性”标签页,勾选“以兼容模式运行这个程序”,在下拉菜单中选择一个较旧的Windows版......
  • [rCore学习笔记 01]安装VMwareWorkStationPro
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有下载它随便找个地方下载,如果官网下载速度过慢:官网B站微信公众号知乎各大软件站这里附上我使用的版本链接VMware-workstation-f......
  • .Net Core appsettings.json详解 (多环境配置)
    前言在实际开发中一般分为开发环境与生产环境,不同环境下部分配置会有所不同,例如数据库连接字符串等。.NetCore框架中提供了三个值,Development(开发),Staging(分阶段),Production(生产环境),可以根据这三个值配置不同环境。创建appsettings文件创建项目时系统默认创建appsettin......