NLog 安装使用
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 totrue
${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 安装使用的更多相关文章
- NLog 2.0.0.2000 使用实例
原文地址:http://www.cnblogs.com/sorex/archive/2013/01/31/2887174.html ---------------------------------- ...
- NLog日志管理工具(转)
一.通过VS建立一个控制台应用程序. 二.打开程序包管理器控制台.具体操作如下:[工具]>[库程序包管理器]>[程序包管理器控制台]. 三.在程序包管理器控制台下输入命令:Install- ...
- c#的日志插件NLog基本使用
本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logge ...
- NLog小记
NLog安装: Install-Package NLog NLog配置: <?xml version="1.0" encoding="utf-8" ?&g ...
- NLog简单配置与使用
对项目添加NLog 安装完成后,在项目里面会自动引入该引入的dll,并且会添加如下两个文件 NLog的配置主要是在这个config文件里.当然也可以将这个文件里面的nlog节点复制到项目配置文件App ...
- NuGet的安装和使用
好久没有用NuGet了.今天项目中正好有需要.因长时间不用,所以还要去网上看攻略,索性记录下来免得再出现类似情况.(我是一个比较懒得人,不喜欢写博客园,平时都随手整理到本地PC上.以后要努力改掉这个坏 ...
- .Net快速上手Nlog日志组件
目录 一.NLog 简介 二.NLog 安装 三. NLog 配置 四.程序代码中写日志 五.参考 一.NLog 简介 NLog是适用于各种.NET平台的灵活,免费的日志记录平台.NLog使写入多个目 ...
- 使用logdashboard查看可视化日志
logdashboard 日志面板是我在Github写的一个开源项目,旨在让查看日志变的方便快捷.在线预览 现在功能有日志检索.趋势图.异常堆栈快速查看.日志详情等 logdashboard支持自定义 ...
- 通过日志查看Web Api详细运行过程
1. 通过Nuget安装System.Web.Http.Tracing. 2. 通过HttpConfiguration,注册SystemDiagnosticsTraceWriter public st ...
随机推荐
- [C#网络编程系列]专题一:网络协议简介
转自:http://www.cnblogs.com/zhili/archive/2012/08/11/NetWorkProgramming.html 因为这段时间都在研究C#网络编程的一些知识, 所以 ...
- FileZilla 425 Can't open data connection
FileZilla 425 Can't open data connection WIN 2008 SERVER+FileZilla FTP Server,FTP端口:2013 防火墙中已允许FTP ...
- Excel通过宏创建百万数据
打开视图->宏->编辑,代码如下,cells(n,m)表示当前Excel表格第n行第m列</span> Sub newdata() Dim i As Long Cells(i, ...
- Good Numbers
Problem Description If we sum up every digit of a number and the result can be exactly divided by 10 ...
- 水leetcode 爬楼梯
public class Solution { public int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; int pr ...
- 理解newid()和newsequentialid()
原文地址:http://blog.csdn.net/xushichang/article/details/4390957 1.:newsequentialid 函数比起 newid 函数最大的好处是: ...
- phonegap与google analytics整合
用phonegap开发的app接近尾声,需要整一个谷歌分析进去. 1.首先申请一个GA帐号,在“what would you like to track”下选择APP
- 如何在 CentOS 7 上安装 Redis 服务器
大家好,本文的主题是 Redis,我们将要在 CentOS 7 上安装它.编译源代码,安装二进制文件,创建.安装文件.在安装了它的组件之后,我们还会配置 redis ,就像配置操作系统参数一样,目标就 ...
- etc下
用户账号与密码参数: /etc/passwd . /etc/shadow 用户组相关方面的条件: /etc/group . /etc/gshadow 用户个人文件数据: /h ...
- Caffe 在 Ubuntu 中安装
Ubuntu Installation General dependencies sudo apt-get install libprotobuf-dev libleveldb-dev libsnap ...