先说Log4net,它是.net平台上一个老牌的日志框架,我接触的时间也不长(由于公司有本身的日志库),可是看着各开源库都在用这个因而前段时间也尝试去了解了一下。html
首先让我认识到Log4net强大的地方就是它的多目标输出,能够输出到控制台、文件、数据库、系统事件、Email等,几乎无所不能。而后它能够经过配置让日志系统实时生效,好比说在服务运行的过程当中修改配置改变输出目标,改变日志等级等,均不用重启程序。可是Log4net也有一个让我比较头痛的地方就是感受配置过于复杂,根本记不住,每次都必须去查阅资料,因而乎以前我也针对Log4net作了一个简单的封装,内嵌了一个默认使用文件存储的日志配置,提供静态日志方法,还提供一套性能统计的API(貌似Visual Studio 2015后IDE已自带了)。如下是这个封装的源代码地址:github,nuget地址:nuget。git
下面说说为何又关注起NLog了,Nlog没有Log4net老牌,使用从Nuget下载量来看也没有Log4net用户量大,可是它却一直在保持高速的更新状态,从github主页上看它所支持的平台也至关普遍,从.net环境到mono再到如今最新的Xamarin均支持:
github
下面这个是一篇比较这两种日志的文章,应该是翻译的StackOverFlow再加上做者本身的一些看法: http://www.cnblogs.com/wanglee/archive/2013/05/22/3092474.html。数据库
下面是总结的几点apache
项目 | log4net | nlog |
---|---|---|
流行程度 | 胜 | 负 |
易用性 | 负 | 胜 |
动态配置 | 平 | 平 |
输出目标 | 平 | 平 |
跨平台 | 负 | 胜 |
开源持续维护 | 负 | 胜 |
日志性能 | 负 | 胜 |
这是用这两款日志框架写的一个性能比较的Demo,暂时只比较了文件记录日志的状况(由于相对来讲这种状况应该是最多的),附上源码地址。
性能比较结果如图,分别是Debug条件编译下的单线程和并行多线程以及独占锁和最小冲突锁的状况:多线程
以上性能测试再也不有效,根据网友反馈,因为输出内容的略有差别致使上面性能测试出现不公平的状况,log4Net在输出时可能会有更多的计算量。在优化测试代码状况下,仅让日志框架打印日志内容,其他的包括时间、日志等级、日志类名一概不打印,使用最新版Dll,两个框架性能相差无几。框架
推荐阅读:
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性能