.net core下优秀的日志框架使用解析,附源代码
在 .NET Core 中,日志是一个非常重要的组件,它可以帮助我们记录应用程序的运行情况,以便在出现问题时进行排查。在本文中,我们将介绍五个优秀的 .NET Core 日志框架,它们分别是 Serilog、NLog、Log4Net、
Microsoft.Extensions.Logging 和 Loupe。我们将为每个框架提供使用方法及步骤,并提供源代码示例。
1. Serilog
Serilog 是一个高度可扩展的 .NET Core 日志框架,它支持多种输出格式,包括控制台、文件、Elasticsearch 等。Serilog 的特点是可配置性强,支持链式调用,可以自定义日志格式和输出方式。
使用方法
- 安装 Serilog NuGet 包:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
- 在程序入口处配置 Serilog:
using Serilog;
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
// ...
}
- 记录日志:
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 的特点是配置简单,易于使用,可以自定义日志格式和输出方式。
使用方法
- 安装 NLog NuGet 包:
Install-Package NLog
- 在程序入口处配置 NLog:
using NLog.Web;
public static void Main(string[] args)
{
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
// ...
}
- 记录日志:
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 的特点是稳定性高,配置灵活,可以自定义日志格式和输出方式。
使用方法
- 安装 Log4Net NuGet 包:
Install-Package log4net
- 在程序入口处配置 Log4Net:
using log4net;
using log4net.Config;
public static void Main(string[] args)
{
XmlConfigurator.Configure(new FileInfo("log4net.config"));
var logger = LogManager.GetLogger(typeof(Program));
// ...
}
- 记录日志:
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 的依赖注入框架一起使用。
使用方法
- 安装 Microsoft.Extensions.Logging NuGet 包:
Install-Package Microsoft.Extensions.Logging
- 在程序入口处配置 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>();
// ...
}
- 记录日志:
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 的特点是功能强大,支持分析、监控、报警等多种高级功能。
使用方法
- 安装 Loupe NuGet 包:
Install-Package Gibraltar.Agent
- 在程序入口处配置 Loupe:
using Gibraltar.Agent;
public static void Main(string[] args)
{
Log.StartSession();
// ...
}
- 记录日志:
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下优秀的日志框架使用解析,附源代码的更多相关文章
- 基于事件驱动的DDD领域驱动设计框架分享(附源代码)
原文:基于事件驱动的DDD领域驱动设计框架分享(附源代码) 补充:现在再回过头来看这篇文章,感觉当初自己偏激了,呵呵.不过没有以前的我,怎么会有现在的我和现在的enode框架呢?发现自己进步了真好! ...
- .Net Core 集成ExceptionLess分布式日志框架之本地化部署
前言 公司目前使用的项目中关于日志记录这块,之前一直都是使用的Log4net 存放于后台文件中的,对于异常错误啊,或者需要查看一些详情错误的时候感觉很不方便,要到服务器上去打开日志文件检索错误,降低了 ...
- 一个.NET Core下的开源插件框架
插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...
- .net core 下调用.net framework框架的WCF方法写法
通过添加服务引用后生成的代码,可以得知首先要设置Basic连接写法的属性,并且设置WCF服务的地址: 我在这里建立工厂类如下: using System; using System.ServiceMo ...
- python3下最全的wordcloud用法,附源代码及相关文件
一.wordcloud是什么 词云,在一段文本中提取关键词进行扁平化的展示,更能吸引目标客户的眼球. 市面上有很多在线生成词云的工具,本文以Python中的第三方库wordcloud为例讲解如何自动生 ...
- .net core中的那些常用的日志框架(Serilog篇)
前言 上文说到Nlog日志框架,感觉它功能已经很强大,今天给大家介绍一个很不错的日志框架Serilog,根据我的了解,感觉它最大的优势是,结构化日志,它输出的日志是Json的格式,如果你使用的是Mon ...
- springboot日志框架
Spring Boot日志框架Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用L ...
- Java 日志框架终极教程
概述 对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中.日志 API 所能提供的功能是多种多样的, ...
- 浅谈Log4j2日志框架及使用
目录 1.日志框架 2.为什么需要日志接口,直接使用具体的实现不就行了吗? 3.log4j2日志级别 4.log4j2配置文件的优先级 5.对于log4j2配置文件的理解 6.对于Appender的理 ...
- 自己写的日志框架--linkinLog4j--实现基本的框架功能
OK,上面一步我们已经知道了日志框架的必要性,然后我们也对比了直接不用日志框架来记录日志的种种弊端.现在我们开始就来一步一步的实现自己的日志框架. 大体的思路如下: 1,实现多种日志级别,通过设值不同 ...
随机推荐
- 震惊!强大的接口自动化测试框架2.0,unittest与pytest无缝穿插对接,可以像postman一样编写代码
theme: fancy highlight: arta 项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python + unittest + ddt + HTMLTestRunne ...
- 网络请求-Android篇(Okhttp和Retrofit)
一.OkHttp的介绍和基本用法 OkHttp是一个流行的开源Java和Android应用程序的HTTP客户端.它由Square Inc.开发,提供了一种简单高效的方式来进行应用程序中的HTTP请求. ...
- SpringCloud搭建保姆级教程
一.搭建服务注册与发现中⼼ 使⽤Spring Cloud Netflix 中的 Eureka 搭建服务注册与发现中⼼ 1.创建SpringBoot应用添加依赖 1.spring web 2.eurek ...
- Solution Set -「CF 1490」
「CF 1490A」Dense Array Link. 显然不满足的 adjacent elements 之间一直加 \(\min\times2,\min\times4,\cdots,\min\tim ...
- git升级编译安装
一.删除旧版本git 方法一. yum remove git -y (centos环境) apt-get remove git -y (Ubuntu环境) 方法二. which git [root@p ...
- No module named virtualenvwrapper 虚拟环境报错
No module named virtualenvwrapper 虚拟环境报错 安装虚拟环境命令 sudo pip install virtualenv sudo pip install virtu ...
- Go指针探秘:深入理解内存与安全性
Go指针为程序员提供了对内存的深入管理能力,同时确保了代码的安全性.本文深入探讨了Go指针的基础概念.操作.深层理解及其特性与限制.通过深入了解其设计哲学和应用,我们可以更好地利用Go的强大功能. 关 ...
- Python基础——计算机组成原理、操作系统概述、编程语言的由来、编程语言分类、python介绍、 安装Cpython解释器、 第一个python程序
文章目录 一 引子: 1.1 什么是语言?什么是编程语言?为何要有编程语言? 1.2 什么是编程?为什么要编程? 二 计算机组成原理 2.1.什么是计算机? 2.2.为什么要用计算机? 2.3.计算机 ...
- vscode没有完全汉化怎么办? vs code部分内容没汉化的解决办法
- jmeter的全局变量(将登陆token设置全局)
1.首先调用登陆接口,用json提取器,取出响应内的token值 2.在beanshell取样器中设置全局变量 //设置全局变量方法一:用函数__setProperty设置${__setProper ...