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 ...
随机推荐
- Android学习笔记12:图像渲染(Shader)
在Android中,提供了Shader类专门用来渲染图像以及一些几何图形. Shader类包括了5个直接子类,分别为:BitmapShader.ComposeShader.LinearGradient ...
- 【CF】7 Beta Round D. Palindrome Degree
manacher+dp.其实理解manacher就可以解了,大水题,dp就是dp[i]=dp[i>>1]+1如何满足k-palindrome条件. /* 7D */ #include &l ...
- 1003: A Bug
题目链接:http://172.16.200.33/JudgeOnline/problem.php?id=1003 分析: (1)题意很简单,就是检查一堆数据中是否有同性恋,找出主要矛盾是如果1喜欢2 ...
- RHEL6彻底禁用ip6的方法
一.vi /etc/modprobe.d/disable-ipv6.conf(名字随便起)(RHEL6.0之后没有了/etc/modprobe.conf这个文件) 输入:install ipv6 / ...
- XPath在asp.net中查询XML -摘自网络
.NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...
- python-面向对象(一)——开篇基础
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) 一.创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现, ...
- STM32 IAP 在线更新程序 为什么有时行 有时又不行 感觉不可靠 问题解决
搞了一天才发现 在MDK设置选项中有个"linker"选项卡 , 需要在Project->Options->Linker中将Use Memory Layout from ...
- java的单例设计模式
java的单例设计模式包括:饿汉设计模式和懒汉设计模式: 步骤: 1.创建一个对象把他设置为私有的成员变量,保证唯一 2.私有构造方法,防止new一个对象. 3.定义一个公开的静态方法,返回第一步创建 ...
- oracle 语句优化
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可 ...
- How to easily concatenate text based on criteria in Excel? 如何将Excel中的文本按条件合并
To combine text with the unique ID numbers, you can extract the unique values first and then create ...