在 .NET Core 中,日志是一个非常重要的组件,它可以帮助我们记录应用程序的运行情况,以便在出现问题时进行排查。在本文中,我们将介绍五个优秀的 .NET Core 日志框架,它们分别是 Serilog、NLog、Log4Net、
Microsoft.Extensions.Logging 和 Loupe。我们将为每个框架提供使用方法及步骤,并提供源代码示例。

1. Serilog

Serilog 是一个高度可扩展的 .NET Core 日志框架,它支持多种输出格式,包括控制台、文件、Elasticsearch 等。Serilog 的特点是可配置性强,支持链式调用,可以自定义日志格式和输出方式。

使用方法

  1. 安装 Serilog NuGet 包:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
  1. 在程序入口处配置 Serilog:
using Serilog;

public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger(); // ...
}
  1. 记录日志:
Log.Information("This is an information message.");
Log.Warning("This is a warning message.");
Log.Error("This is an error message.");

示例代码

using Serilog;

public 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

NLog 是一个流行的 .NET Core 日志框架,它支持多种输出方式,包括控制台、文件、数据库等。NLog 的特点是配置简单,易于使用,可以自定义日志格式和输出方式。

使用方法

  1. 安装 NLog NuGet 包:
Install-Package NLog
  1. 在程序入口处配置 NLog:
using NLog.Web;

public static void Main(string[] args)
{
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); // ...
}
  1. 记录日志:
logger.Info("This is an information message.");
logger.Warn("This is a warning message.");
logger.Error("This is an error message.");

示例代码

using NLog.Web;

public class Program
{
public static void Main(string[] args)
{
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); logger.Info("Hello, NLog!"); LogManager.Shutdown();
}
}

3. Log4Net

Log4Net 是一个成熟的 .NET Core 日志框架,它支持多种输出方式,包括控制台、文件、数据库等。Log4Net 的特点是稳定性高,配置灵活,可以自定义日志格式和输出方式。

使用方法

  1. 安装 Log4Net NuGet 包:
Install-Package log4net
  1. 在程序入口处配置 Log4Net:
using log4net;
using log4net.Config; public static void Main(string[] args)
{
XmlConfigurator.Configure(new FileInfo("log4net.config")); var logger = LogManager.GetLogger(typeof(Program)); // ...
}
  1. 记录日志:
logger.Info("This is an information message.");
logger.Warn("This is a warning message.");
logger.Error("This is an error message.");

示例代码

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 自带的日志框架,它支持多种输出方式,包括控制台、文件、EventSource 等。Microsoft.Extensions.Logging 的特点是易于集成,可以与 .NET Core 的依赖注入框架一起使用。

使用方法

  1. 安装 Microsoft.Extensions.Logging NuGet 包:
Install-Package Microsoft.Extensions.Logging
  1. 在程序入口处配置 Microsoft.Extensions.Logging:
using Microsoft.Extensions.Logging;

public static void Main(string[] args)
{
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole();
}); var logger = loggerFactory.CreateLogger<Program>(); // ...
}
  1. 记录日志:
logger.LogInformation("This is an information message.");
logger.LogWarning("This is a warning message.");
logger.LogError("This is an error message.");

示例代码

using Microsoft.Extensions.Logging;

public class Program
{
private static readonly ILogger logger; static Program()
{
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole();
}); logger = loggerFactory.CreateLogger<Program>();
} public static void Main(string[] args)
{
logger.LogInformation("Hello, Microsoft.Extensions.Logging!");
}
}

5. Loupe

Loupe 是一个全功能的 .NET Core 日志框架,它支持多种输出方式,包括控制台、文件、数据库、Web 界面等。Loupe 的特点是功能强大,支持分析、监控、报警等多种高级功能。

使用方法

  1. 安装 Loupe NuGet 包:
Install-Package Gibraltar.Agent
  1. 在程序入口处配置 Loupe:
using Gibraltar.Agent;

public static void Main(string[] args)
{
Log.StartSession(); // ...
}
  1. 记录日志:
Log.Information("This is an information message.");
Log.Warning("This is a warning message.");
Log.Error("This is an error message.");

示例代码

using Gibraltar.Agent;

public class Program
{
public static void Main(string[] args)
{
Log.StartSession(); Log.Information("Hello, Loupe!"); Log.EndSession();
}
}

以上是五个优秀的 .NET Core 日志框架的介绍和使用方法。这些框架各有特点,可以根据实际需求选择合适的框架。无论选择哪个框架,记得在程序入口处配置日志,并在适当的地方记录日志,以便在出现问题时进行排查。

.net core下优秀的日志框架使用解析,附源代码的更多相关文章

  1. 基于事件驱动的DDD领域驱动设计框架分享(附源代码)

    原文:基于事件驱动的DDD领域驱动设计框架分享(附源代码) 补充:现在再回过头来看这篇文章,感觉当初自己偏激了,呵呵.不过没有以前的我,怎么会有现在的我和现在的enode框架呢?发现自己进步了真好! ...

  2. .Net Core 集成ExceptionLess分布式日志框架之本地化部署

    前言 公司目前使用的项目中关于日志记录这块,之前一直都是使用的Log4net 存放于后台文件中的,对于异常错误啊,或者需要查看一些详情错误的时候感觉很不方便,要到服务器上去打开日志文件检索错误,降低了 ...

  3. 一个.NET Core下的开源插件框架

    插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...

  4. .net core 下调用.net framework框架的WCF方法写法

    通过添加服务引用后生成的代码,可以得知首先要设置Basic连接写法的属性,并且设置WCF服务的地址: 我在这里建立工厂类如下: using System; using System.ServiceMo ...

  5. python3下最全的wordcloud用法,附源代码及相关文件

    一.wordcloud是什么 词云,在一段文本中提取关键词进行扁平化的展示,更能吸引目标客户的眼球. 市面上有很多在线生成词云的工具,本文以Python中的第三方库wordcloud为例讲解如何自动生 ...

  6. .net core中的那些常用的日志框架(Serilog篇)

    前言 上文说到Nlog日志框架,感觉它功能已经很强大,今天给大家介绍一个很不错的日志框架Serilog,根据我的了解,感觉它最大的优势是,结构化日志,它输出的日志是Json的格式,如果你使用的是Mon ...

  7. springboot日志框架

    Spring Boot日志框架Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用L ...

  8. Java 日志框架终极教程

    概述 对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中.日志 API 所能提供的功能是多种多样的, ...

  9. 浅谈Log4j2日志框架及使用

    目录 1.日志框架 2.为什么需要日志接口,直接使用具体的实现不就行了吗? 3.log4j2日志级别 4.log4j2配置文件的优先级 5.对于log4j2配置文件的理解 6.对于Appender的理 ...

  10. 自己写的日志框架--linkinLog4j--实现基本的框架功能

    OK,上面一步我们已经知道了日志框架的必要性,然后我们也对比了直接不用日志框架来记录日志的种种弊端.现在我们开始就来一步一步的实现自己的日志框架. 大体的思路如下: 1,实现多种日志级别,通过设值不同 ...

随机推荐

  1. 王道oj/problem15(用c++的引用精简代码)

    网址:http://oj.lgwenda.com/problem/15 思路:子函数的形参是指针的时候格式为 int*&p,且原函数实参为p 主函数使用fgets(字符串的指针,最大容量,st ...

  2. 医疗知识图谱问答 ——Neo4j 基本操作

    前言 说到问答机器人,就不得不说一下 ChatGPT 啦.一个预训练的大预言模型,只要是人类范畴内的知识,似乎他回答得都井井有条,从写文章到写代码,再到解决零散琐碎的问题,不光震撼到我们普通人,就百度 ...

  3. 记一次 .NET某培训学校系统 内存碎片化分析

    一:背景 1. 讲故事 前些天有位朋友微信上找到我,说他们学校的Web系统内存一直下不去,让我看下到底是怎么回事,老规矩让朋友生成一个dump文件丢给我,看一下便知. 二:WinDbg 分析 1. 托 ...

  4. 桌面应用打包:pyinstaller

    1 背景 在使用python开发一些小工具时,如果其他人电脑中没有python环境或者没有安装相应的第三方库,是没办法运行的,而要求对方安装又不现实,尤其是对方不是技术人员,因此如何将一个独立的pyt ...

  5. 如何破解wifi密码?

    前期准备: kali 系统 外置无线网卡 破解过程: 首先,需要登录kali系统,可以是虚拟机. 在虚拟机中设置点击 虚拟机-可移动设备-无线网卡的名称,将无线网卡绑定到kali虚拟机上. 在kali ...

  6. AI绘画StableDiffusion实操教程:冰霜旗袍美女

    飞书原文链接,获取更多资源:AI绘画StableDiffusion实操教程:冰霜旗袍美女 前几天分享了StableDiffusion的入门到精通教程:AI绘画:Stable Diffusion 终极炼 ...

  7. crontab定时任务不执行的一些原因总结

    参考博文地址: https://www.jb51.net/article/154290.htm声明:本文章是在以上地址博文基础上进行整理学习,如有侵权,请联系博主删除,感谢知识共享,一起进步,加油鸭 ...

  8. AK、SK实现(双方API交互:签名及验证)

    参考:https://blog.csdn.net/yqwang75457/article/details/117815474 1.原理 AK/SK: AK:Access Key Id,用于标示用户. ...

  9. GIS中的ROI文件可否由.xml格式转为.roi格式?

      本文介绍在ENVI软件中,将用户自行绘制的.xml格式的感兴趣区(ROI)文件转换为.roi格式的方法.   对于ENVI软件,其在早期版本中,默认将用户所绘制的感兴趣区文件保存为.roi格式:而 ...

  10. 图解Spark排序算子sortBy的核心源码

    原创/朱季谦 一.案例说明 以前刚开始学习Spark的时候,在练习排序算子sortBy的时候,曾发现一个有趣的现象是,在使用排序算子sortBy后直接打印的话,发现打印的结果是乱序的,并没有出现完整排 ...