Log4net和Nlog

2024-01-21 11:58
文章标签 log4net nlog

本文主要是介绍Log4net和Nlog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Log4net

先说Log4net,它是.net平台上一个老牌的日志框架,我接触的时间也不长(因为公司有自己的日志库),但是看着各开源库都在用这个于是前段时间也尝试去了解了一下。

首先让我认识到Log4net强大的地方就是它的多目标输出,可以输出到控制台、文件、数据库、系统事件、Email等,几乎无所不能。然后它可以通过配置让日志系统实时生效,比如说在服务运行的过程中修改配置改变输出目标,改变日志等级等,均不用重启程序。但是Log4net也有一个让我比较头痛的地方就是感觉配置过于复杂,根本记不住,每次都必须去查阅资料,于是乎之前我也针对Log4net做了一个简单的封装,内嵌了一个默认使用文件存储的日志配置,提供静态日志方法,还提供一套性能统计的API(貌似Visual Studio 2015后IDE已自带了)。以下是这个封装的源代码地址:github,nuget地址:nuget。

NLog

下面说说为什么又关注起NLog了,Nlog没有Log4net老牌,使用从Nuget下载量来看也没有Log4net用户量大,但是它却一直在保持高速的更新状态,从github主页上看它所支持的平台也相当广泛,从.net环境到mono再到现在最新的Xamarin均支持:
nlog支持范围

 

比较

下面这个是一篇比较这两种日志的文章,应该是翻译的StackOverFlow再加上作者自己的一些见解: http://www.cnblogs.com/wanglee/archive/2013/05/22/3092474.html。

下面是总结的几点

项目log4netnlog
流行程度
易用性
动态配置
输出目标
跨平台
开源持续维护
日志性能

性能比较(不再有效,详见文末)

这是用这两款日志框架写的一个性能比较的Demo,暂时只比较了文件记录日志的情况(因为相对来说这种情况应该是最多的),附上源码地址。
性能比较结果如图,分别是Debug条件编译下的单线程和并行多线程以及独占锁和最小冲突锁的情况:

性能比较结果

 

2017年9月1日更新:

以上性能测试不再有效,根据网友反馈,由于输出内容的略有差异导致上面性能测试出现不公平的情况,log4Net在输出时可能会有更多的计算量。在优化测试代码情况下,仅让日志框架打印日志内容,其余的包括时间、日志等级、日志类名一律不打印,使用最新版Dll,两个框架性能相差无几。

这篇关于Log4net和Nlog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629468

相关文章

NLog日志封装和配置(C#)

NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。 NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。 简单的说可以用NLog记录系统中的日志,尤其是

如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?

前言 昨天分享了在 .NET Core Console 项目中应用 NLog 写日志的详细例子,有几位小伙伴私信说 ASP.NET Core Web Api 项目中无法使用,其实在 ASP.NET Core Web Api 项目中应用 NLog 写日志,跟 .NET Core Console 项目是有些不一样的,今天我特地写了一个在 ASP.NET Core Web Api 项目中应用 NL

分享一个 .NET Core Console 项目中应用 NLog 写日志的详细例子

前言 日志在软件开发中扮演着非常重要的角色,通常我们用它来记录应用程序运行时发生的事件、错误信息、警告以及其他相关信息,帮助在调试和排查问题时更快速地定位和解决 Bug。 通过日志,我们可以做到: 故障排除和调试:帮助追踪程序的运行情况,定位问题并进行故障排除。 性能监控:通过日志记录关键性能指标,可以很方便地监控程序的性能并进行优化。 安全性:记录潜在的安全问题,帮助及时发现并解

在C#中使用 NLog 库进行日志记录

NLog 是 .NET 的日志记录框架。具有丰富的日志路由和管理能力,极大地帮助您生成和管理日志。NLog 是一个库,可以轻松地同时记录和管理多个不同区域(例如控制台、数据库或文本文件)中的数据。我们可以按如下方式列出 NLog 的功能: 扩展: 在日志记录时,您可能希望将日志记录保存在不同的位置,例如数据库、文本文件或控制台。NLog 允许您通过单个配置文件执行这些操作。 此外,还有一些解决

log4net的简单应用

一、介绍 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。 log4net是Apache软件基金会Apache Logging Services工程的一部分。Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务。支持多数框架,可输出日志到多种目标,层级日志体系,可使用

NLog 配置文件及简单使用

1.从Packet Mananger中安装NLog NuGet\Install-Package NLog -Version 5.3.2 2.在项目名右键新建一个应用程序配置文件NLog.config,输入以下内容,这个文件最后需要copy到可执行文件同目录 <?xml version="1.0" encoding="utf-8" ?><nlog xmlns="http://www.nlog

VisualStudio C#中使用Log4net输出不同类型的日志

20240514 By wdhuag 目录 前言: 参考: 安装Log4net包并引用: 创建log4net.config配置文件,属性要设置始终复制: 在AssemblyInfo.cs中加入配置:  初始化时读取配置: 调用: 一个简单的例子: 前言: Log4net输出不同类型的日志是基本操作,但是网上的举例注释太杂、实例太乱,这里做一个简化的例子。

.NET_NLog

步骤 1. 添加依赖 ①Microsoft.Extensions.DependencyInjection ②NLog.Extensions.Logging(或Microsoft.Extensions.Logging.___) Tutorial · NLog/NLog Wiki · GitHub 2.添加nlog.config文件(默认名称, 可改为其他名称, 但需要另行配置) 文

Log4net等级说明以及按照不同级别写入多个日志文件

等级说明: Level级别:DEBUG <INFO<WARN<ERROR<FATAL <root><level value="INFO"/><appender-ref ref="RollingLogFileAppender"/><appender-ref ref="ColoredConsoleAppender"/></root>上述的RollingLogFileAppender是是能够

日志框架Nlog之异步记录

日志功能本来是一件非常好的事情,能帮助我们分析和解决很多问题。但是,如果让日志影响到性能,这就需要权衡一下了。没关系,本篇博客咱们不仅来解决这个问题,咱们更要眼见为实,带图带真相让你用的明明白白。 日志实现异步功能            其实呢就一句话。。            配置文件targets中配置async="true"即为异步。默认或写false都为同步。