日志框架对比 NLog VS Log4net
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均支持:

比较
下面这个是一篇比较这两种日志的文章,应该是翻译的StackOverFlow再加上作者自己的一些见解: http://www.cnblogs.com/wanglee/archive/2013/05/22/3092474.html。
下面是总结的几点
| 项目 | log4net | nlog |
|---|---|---|
| 流行程度 | 胜 | 负 |
| 易用性 | 负 | 胜 |
| 动态配置 | 平 | 平 |
| 输出目标 | 平 | 平 |
| 跨平台 | 负 | 胜 |
| 开源持续维护 | 负 | 胜 |
| 日志性能 | 负 | 胜 |
性能比较
这是用这两款日志框架写的一个性能比较的Demo,暂时只比较了文件记录日志的情况(因为相对来说这种情况应该是最多的),附上源码地址。
性能比较结果如图,分别是Debug条件编译下的单线程和并行多线程以及独占锁和最小冲突锁的情况:

推荐阅读:
NET开源项目介绍及资源推荐:http://www.cnblogs.com/Terrylee/archive/2006/12/03/opensource_framework_and_resource_recommendation_Log.html
附加链接:
log4net:https://logging.apache.org/log4net/
NLog:https://github.com/NLog/NLog
日志框架对比 NLog VS Log4net的更多相关文章
- .net core中的那些常用的日志框架(NLog篇)
前言 咱们上回讲到,.net core中内置的Logging日志框架的使用,以及浅显的讲解,接下来,给大家介绍一个第三方日志框架(NLog). NLog简介 NLog是适用于各种.NET平台(包括.N ...
- Java常用的日志框架
1.Java常用日志框架对比 https://www.jianshu.com/p/bbbdcb30bba8 2.Log4j,Log4j2,Logback日志框架性能对比 https://bbs.hua ...
- .net core中的那些常用的日志框架(Serilog篇)
前言 上文说到Nlog日志框架,感觉它功能已经很强大,今天给大家介绍一个很不错的日志框架Serilog,根据我的了解,感觉它最大的优势是,结构化日志,它输出的日志是Json的格式,如果你使用的是Mon ...
- 静态日志框架Extensioner.Logging
静态日志框架,输出文本文件,基于log4net扩展,轻量,方便,无侵入! 使用方法 执行Install-Package Extensioner.Logging -Version 2.0.0导入Nuge ...
- 一个简单好用的日志框架NLog
之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ...
- NLog日志框架使用探究-1
目录 前言 为什么是NLog? 目的 配置 基本配置 日志等级 输出例子 目标 参数 规则 日志分发 日志收集 结语 参考文档 前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录 ...
- 日志框架 NLog
这里按老规矩先进行和其它产品进行比较: 目前在.net平台存在两个比较老牌的日志框架分别为Log4net和NLog. 我们进行对这两种框架进行比较下 Log4net Log4net是一个老牌的日志框架 ...
- log4net 日志框架的配置
log4net 日志框架的配置——静态文件(一) 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2 ...
- ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示
环境说明 1. windows server 2012 R2 64位 2. log4net.ElasticSearch 3. kibana-5.5.0-windows-x86.zip 架构说明 数据采 ...
随机推荐
- Linux shell basic2 cat find tr
Cat stands for concatenate. Case 1. When the text files have more blank lines, we want to remove the ...
- Oracle 性能优化之一二
本人使用oracle时间不多,但是在项目中积累了一些经验教训,记录于此,以方便自己和他人解决类似的问题. 1.temp space超出限制的问题 问题场景: 在复杂的ETL query中,有时候一张f ...
- tika提取pdf信息异常
org.apache.tika.sax.WriteOutContentHandler$WriteLimitReachedException: Your document contained more ...
- ZooKeeper系列1:ZooKeeper的配置
问题导读:1.zookeeper有哪些配置文件?2.zookeeper最低配置需要哪些配置项?3.zookeeper高级配置需要配置哪些项? ZooKeeper 的功能特性通过 ZooKeeper 配 ...
- 如何判断两个String是否是Anagrams_java实现
Anagrams:是颠倒字母顺序的字符串 本文提供三个方法,分别分析时间空间复杂度 方法一:暴力遍历 时间复杂度:O(n^2) 方法二:基于排序算法,Sorting的时间复杂度是O(n*log(n)) ...
- MIT jos 6.828 Fall 2014 训练记录(lab 1)
注: 源代码参见我的github:https://github.com/YaoZengzeng/jos Part 1: PC Bootstrap +------------------+ <- ...
- Redis漏洞?阿里云被攻击!
今天运维那边过来说阿里云服务器进程被占用很多,后来查了一下进程发现了这个玩意: 小编我看不懂,经运维先森仔细研究,发现这是被注入进来的一个进程,服务器被当成了肉鸡,专门用来跑比特币的,这样对方就不需要 ...
- [3D跑酷] MissionManager
前言 许久没有更新日志了,之前写了GUIManager,GUIClickEventReceiver还有AudioManager,这次写MissionManager 引用关系 首先看下MissionMa ...
- Android事件分发机制完全解析,带你从源码的角度彻底理解
Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都 ...
- javascript中的数组操作
1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...