这里按老规矩先进行和其它产品进行比较:

目前在.net平台存在两个比较老牌的日志框架分别为Log4net和NLog。

我们进行对这两种框架进行比较下

Log4net

Log4net是一个老牌的日志框架,它可以实现日志多目标输出,输出到控制台、文件、数据库、系统事件、Email等,几乎无所不能。它可以通过配置让日志系统实时生效,比如说在服务运行的过程中修改配置改变输出目标,改变日志等级等,均不用重启程序。存在的缺点就是配置繁琐,基本上不查资料我是配置不出来的。

NLog

NLog是和Log4net差不多的日志框架,属于新兴的日志框架。我们从它们的支持和性能方面来比较下。

借鉴博客园大佬们测试的结果

我原先差点就信了,后来作者又在2017年9月1日发出以下内容。

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

毕竟是老牌子的日志框架,居然还输给新人啦。

但从更新速度来说,Nlog一直处于持续更新中,支持的也比较多。所以我们还是在这里讲下。

先用nuget 加载下NLog

加载后我们来看下项目里面多了些神马?

日志的配置(摘抄)

通过在启动的时候对一些常用目录的扫描,NLog会尝试使用找到的配置信息进行自动的自我配置。当你运行一个独立的*.exe客户端可执行程序时,NLog将在以下目录搜索配置信息:

标准的程序配置文件(通常为 程序名.exe.config

程序目录下的程序名.exe.nlog文件

程序目录下的NLog.config文件

NLog.dll所在目录下的NLog.dll.nlog文件

如果定义了NLOG_GLOBAL_CONFIG_FILE环境变量,则该变量所指向的文件

如果是一个ASP.NET程序,被搜索的目录包括:

标准的web程序配置文件web.config

web.config在同一目录下的web.nlog文件

程序目录下的NLog.config文件

NLog.dll所在目录下的NLog.dll.nlog文件

如果定义了NLOG_GLOBAL_CONFIG_FILE环境变量,则该变量所指向的文件

由于.NET Compact Framework不支持程序配置文件(*.exe.config)和环境变量,因此NLog将只会扫描这些地方:

程序目录下的NLog.config文件

NLog.dll所在目录下的NLog.dll.nlog文件

如果定义了NLOG_GLOBAL_CONFIG_FILE环境变量,则该变量所指向的文件

 

NLog配置文件NLog.config,通过上述内容我们可以知道NLog可以配置在web.config里面或者独立的NLog.config文件都是OK的。

Web.config

<configuration>

<configSections>

<section
name="nlog"
type="NLog.Config.ConfigSectionHandler, NLog"/>

</configSections>

<nlog>

这部分就是NLog.config里面内容

</nlog>

</configuration>

 

Nlog.config

<?xml
version="1.0" encoding="utf-8" ?>

<nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"

autoReload="true"

throwExceptions="false"

internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

<!-- optional, add some variables

https://github.com/nlog/NLog/wiki/Configuration-file#variables

-->

<variable
name="myvar" value="myvalue"/>

<!--

See https://github.com/nlog/nlog/wiki/Configuration-file

for information on customizing logging rules and outputs.

-->

<targets>

<!--

add your targets here

See https://github.com/nlog/NLog/wiki/Targets for possible targets.

See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.

-->

<!--

Write events to a file with the date in the filename.

<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"

layout="${longdate} ${uppercase:${level}} ${message}" />

-->

</targets>

<rules>

<!-- add your logging rules here -->

<!--

Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"

<logger name="*" minlevel="Debug" writeTo="f" />

-->

</rules>

</nlog>

我们对上述节点名称进行解释下:

  1. <targets>我们看下config里面的描述可以知道是用来配置日志目标/输出

    每个< targets >代表一个目标,且< targets >带有两个属性分别为name和type.

  • name - 目标的名称
  • type - 目标的类型 - 比如"File","Database","Mail"。如果你使用了名字空间,这个属性会被命名为 xsi:type.

 

  1. <rules>看下描述,添加你的日志路由规则,Debug,Info, Warn, Error and Fatal
  2. <variable> 配置变量赋值
  3. <include /> - 导入外部配置文件

    这里我就不详细描述内容,因为官网已经说的很详细了,并且有例子。

    https://github.com/NLog/NLog/wiki

日志框架 NLog的更多相关文章

  1. 一个简单好用的日志框架NLog

    之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ...

  2. NLog日志框架使用探究-1

    目录 前言 为什么是NLog? 目的 配置 基本配置 日志等级 输出例子 目标 参数 规则 日志分发 日志收集 结语 参考文档 前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录 ...

  3. 日志框架对比 NLog VS Log4net

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

  4. Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

    Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...

  5. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  6. NLog日志框架使用探究-2

    目录 前言 自定义参数 日志输出方式 文件 网络传输 数据库 科学使用 参考文档 前言 在一年前,我写过一篇关于NLog入门文章<NLog日志框架使用探究-1>,文章简单的介绍了Nlog的 ...

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

    前言 咱们上回讲到,.net core中内置的Logging日志框架的使用,以及浅显的讲解,接下来,给大家介绍一个第三方日志框架(NLog). NLog简介 NLog是适用于各种.NET平台(包括.N ...

  8. 解读ASP.NET 5 & MVC6系列(9):日志框架

    框架介绍 在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net.NLog.CommonLogging使用起来多多少少都有些费劲,和java的SLF4J根本无法相比. ...

  9. .NET开源分布式日志框架ExceptionLess实战演练(公开版)

    一.课程介绍 在以前,我们做日志收集大多使用 Log4net,Nlog 等框架,在应用程序变得复杂并且集群的时候,可能传统的方式已经不是很好的适用了,因为收集各个日志并且分析他们将变得麻烦而且浪费时间 ...

随机推荐

  1. RabbitMQ 信道(channel)挂掉,但连接仍然存在,同时出现错误:Received remote Channel.Close (406): PRECONDITION_FAILED - unknown delivery tag x 的问题

    该问题经过一番试验,发现是消费者(consumer)程序逻辑错误导致:在消息处理的回调函数中多次ack或nack. 开启Python日志,并在回调函数中两次ack得到如下信息: F:\software ...

  2. 将python源文件打包成exe文件

    pyinstaller 库的使用PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Pyt ...

  3. python操作excel表格文件--使用xlrd模块

    原文: http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 引言: 实际工作中,可能很多情况下都会用到excel表格,像如果不需 ...

  4. 读书笔记--Linux Shell脚本攻略

    总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程ssh等等,都给出来作者挑选 ...

  5. OpenCL 图像卷积 1

    ▶ 书上的代码改进而成,从文件读入一张 256 阶灰度图,按照给定的卷积窗口计算卷积,并输出到文件中. ● 代码,使用 9 格的均值窗口,居然硬读写 .bmp 文件,算是了解一下该文件的具体格式,留作 ...

  6. vue轮播(完整详细版)

    轮播组件vue <swiper :options="swiperOption" class='swiper-box'>     <swiper-slide v-f ...

  7. sudo免密码

    很多都是修改/etc/sudoers权限为740再加上一句 ALL=NOPASSWD:ALL 或者加一句 yourname ALL=(ALL) NOPASSWD: ALL 然后权限改回440 先说第一 ...

  8. linux命令之scp远程文件复制

    scp是linux中功能最强大的文件传输命令,可以实现从本地到远程以及远程到本地的轻松文件传输操作.下面简单的讲解一些关于scp命令的操作,给有用的人一些参考: 首先是本地到远程的操作:操作的格式如下 ...

  9. C++:初始化列表

    有两种原因需要使用初始化列表: 让我们先看一下第一个原因——必要性.(1)对另一个类成员的初始化,(2)成员是一个常量对象,(3)成员是引用.根本原因:编译器总是确保所有成员对象在构造函数体执行之前( ...

  10. JAVA Spring MVC中各个filter的用法

    spring mvc的org.springframework.web.filter包下的Java文件如下: 类的结构如下: AbstractRequestLoggingFilter及其子类 Abstr ...