1:安装

Install-Package NLog.Config 或 通过Nuget

2:Log levels

Trace  非常详细的信息,一般在开发时使用。

Debug  比Trace稍微少一点一般不在生产环境使用

Info    消息信息,一般在生产环境使用

Warn  警告信息,一般用于非 严格限制,能够自动回复或临时失败的消息

Error  错误消息,一般用作异常信息

Fatal  非常严重的错误消息

3:配置

Target

打开 NLog.config,

在<targets>节点内添加:

<target name="logfile" xsi:type="File" fileName="${basedir}/file.txt" />

在MVC项目中要加上${basedir}

在<rules> 节点下添加:

<logger name="*" minlevel="Info" writeTo="logfile" />

这个rule将会把所有的的消息(name="*"),且消息级别>=Info(Info, Warn, Error, Fatal) 发送到targetName位logfile的target上。

4:Demo

using NLog;

public class MyClass
{
private static Logger logger = LogManager.GetCurrentClassLogger(); public void MyMethod1()
{
logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message"); // alternatively you can call the Log() method
// and pass log level as the parameter.
logger.Log(LogLevel.Info, "Sample informational message");
}
}

--指定特殊Routing

<?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"> <targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
</targets> <rules>
<logger name="SomeNamespace.Component.*" minlevel="Trace" writeTo="logfile" final="true" />
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>

第一个rule 将会发送所有的名称以SomeNamespace.Component. 且lever>=Trace,属性 final="true"  将会在写入只有中断之后的rule的执行。

--Wrappers

简单的将一个target 放在另外一个target中即可

<?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"> <targets>
<target name="asyncFile" xsi:type="AsyncWrapper">
<target name="logfile" xsi:type="File" fileName="file.txt" />
</target>
</targets> <rules>
<logger name="*" minlevel="Info" writeTo="asyncFile" />
</rules>
</nlog>

--Layouts

Layout提供了一种格式化输出内容的方式,主要有2中Layout

--简单Layout, Layout Renderers集成

--结构化Layout,可以输出XML,CVS,和其他复杂的结构.

简单的Layouti仅仅是一个String ,是由嵌入在${xxx}的特殊Tag,例如下面的声明,

<target name="logfile" xsi:type="File" fileName="file.txt" layout="${date:format=yyyyMMddHHmmss} ${message}" />

将会在每条消息前面加上格式化的日期信息

Extending NLog

自定义Target

using NLog;
using NLog.Config;
using NLog.Targets; namespace MyNamespace
{
[Target("MyFirst")]
public sealed class MyFirstTarget: TargetWithLayout
{
public MyFirstTarget()
{
this.Host = "localhost";
} [RequiredParameter]
public string Host { get; set; } protected override void Write(LogEventInfo logEvent)
{
string logMessage = this.Layout.Render(logEvent); SendTheMessageToRemoteHost(this.Host, logMessage);
} private void SendTheMessageToRemoteHost(string host, string message)
{
// TODO - write me
}
}
}

自定义Layout:[LayoutRenderer("hello-world")]

public class HelloWorldLayoutRenderer : LayoutRenderer
{ protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
builder.Append("hello world!");
}
}

带参数的Layout

[LayoutRenderer("hello-world")]
public class HelloWorldLayoutRenderer : LayoutRenderer
{
/// <summary>
/// I'm not required or default
/// </summary>
public string Config1 { get; set; } /// <summary>
/// I'm required
/// </summary>
[RequiredParameter]
public string Config2 { get; set; } /// <summary>
/// I'm the default parameter. You can set me as required also.
/// </summary>
[DefaultParameter]
public bool Caps {get;set;}

Example usages

  • ${hello-world} - raises exception: required parameter Config2 isn't set
  • ${hello-world:Config2=abc} - OK, Config2 property set
  • ${hello-world:true:config2=abc} - default parameter (Caps) set to true
  • ${hello-world:true:config2=abc:config1=yes} - all the three properties set.

怎么使用自定义Target/Layout:

1:分开的DLL

<nlog>
<extensions>
<add assembly="MyAssembly"/>
</extensions>
<targets>
<target name="a1" type="MyFirst" host="localhost"/>
<target name="f1" type="file" layout="${longdate} ${hello-world}"
fileName="${basedir}/logs/logfile.log" />
</targets>
<rules>
<logger name="*" minLevel="Info" appendTo="a1"/>
<logger name="*" minLevel="Info" appendTo="f1"/>
</rules>
</nlog>

对应DLL名称放入Extensions中

2:编程方式

   //target
ConfigurationItemFactory.Default.Targets
.RegisterDefinition("MyFirst", typeof(MyNamespace.MyFirstTarget)); //layout renderer
ConfigurationItemFactory.Default.LayoutRenderers
.RegisterDefinition("hello-world", typeof(MyNamespace.HelloWorldLayoutRenderer )); // start logging here

NLog 安装使用的更多相关文章

  1. NLog 2.0.0.2000 使用实例

    原文地址:http://www.cnblogs.com/sorex/archive/2013/01/31/2887174.html ---------------------------------- ...

  2. NLog日志管理工具(转)

    一.通过VS建立一个控制台应用程序. 二.打开程序包管理器控制台.具体操作如下:[工具]>[库程序包管理器]>[程序包管理器控制台]. 三.在程序包管理器控制台下输入命令:Install- ...

  3. c#的日志插件NLog基本使用

    本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logge ...

  4. NLog小记

    NLog安装: Install-Package NLog NLog配置: <?xml version="1.0" encoding="utf-8" ?&g ...

  5. NLog简单配置与使用

    对项目添加NLog 安装完成后,在项目里面会自动引入该引入的dll,并且会添加如下两个文件 NLog的配置主要是在这个config文件里.当然也可以将这个文件里面的nlog节点复制到项目配置文件App ...

  6. NuGet的安装和使用

    好久没有用NuGet了.今天项目中正好有需要.因长时间不用,所以还要去网上看攻略,索性记录下来免得再出现类似情况.(我是一个比较懒得人,不喜欢写博客园,平时都随手整理到本地PC上.以后要努力改掉这个坏 ...

  7. .Net快速上手Nlog日志组件

    目录 一.NLog 简介 二.NLog 安装 三. NLog 配置 四.程序代码中写日志 五.参考 一.NLog 简介 NLog是适用于各种.NET平台的灵活,免费的日志记录平台.NLog使写入多个目 ...

  8. 使用logdashboard查看可视化日志

    logdashboard 日志面板是我在Github写的一个开源项目,旨在让查看日志变的方便快捷.在线预览 现在功能有日志检索.趋势图.异常堆栈快速查看.日志详情等 logdashboard支持自定义 ...

  9. 通过日志查看Web Api详细运行过程

    1. 通过Nuget安装System.Web.Http.Tracing. 2. 通过HttpConfiguration,注册SystemDiagnosticsTraceWriter public st ...

随机推荐

  1. 数据库设主键以及where的应用

    二.第二课 create table teacher ( tno int primary key identity(1,1),  --将tno设为主键(primary key identity(1,1 ...

  2. 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库

     发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...

  3. team geek

    1. 转载自http://book.douban.com/review/6007037/,版权归丸子(^.^)v所有. New Google employees (we call “Nooglers” ...

  4. 全面理解Unity加载和内存管理

     全面理解Unity加载和内存管理http://game.ceeger.com/forum/read.php?tid=4394&fid=2&uid=6507 1.用简单的“for”循环 ...

  5. java 正则表达式例子, 查找字符串

    import java.util.regex.Matcher;import java.util.regex.Pattern; public class Main { public static voi ...

  6. HDU-1339 A Simple Task

    http://acm.hdu.edu.cn/showproblem.php?pid=1339 正常做法超时,要有点小技巧存在. A Simple Task Time Limit: 2000/1000 ...

  7. HDU-1598 find the most comfortable road

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  8. HDU-1874 畅通工程续 (最短路径启蒙题)

    hdu 1874比较基础,拿来练各种刚学会的算法比较好,可以避免好多陷阱,典型的最短路模板题 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memor ...

  9. linux修改主机名

    查看机器名:uname -a 修改机器名: redhat中修改主机名 第一步:#hostname oratest 第二步:修改/etc/sysconfig/network中的hostname 第三步: ...

  10. VS2010+Oracle11+Entity Framework4.1环境搭建及常见问题(转)

    一,开场白: 在微软的实体数据模型中存在四种查询方式:SQL字符串:Linq:Linq to SQL:Linq to Entity(ESQL) 对于Linq SQL目前微软虽然仍在支持,但微软已经声明 ...