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 ...
随机推荐
- sql截取数据库数字字段内容
round(columnName, precision) 四舍五入 trunc(columnName, precision) 强制截断
- 畅通工程2 HDOJ--1863
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Oracle和MSSQL查询有多少张表
Oracle: SELECT count(*) FROM user_tables MSSQL: ) FROM sysobjects WHERE xtype='U' 这种方法可能会把dbo.dtprop ...
- 通过udl文件得到连接字符串
1.新建一个文件,文件名任意,扩展名为udl 2.双击打开这个udl文件 3.点下一步: 4.测试连接成功后点击确定 5.用记事本打开这个udl文件: 连接字符串就出来了
- ShadowGun Deadzone 放出 GM Kit Mod 包
一向在技术上比较开放的 MadFinger 继上次给出 shadowgun 的关卡包之后,这次更加大方的给出了更加完整的关卡的代码,甚至包括服务器:ShadowGun Deadzone GM Kit. ...
- params数据来源和参数传递的一点小理解
今天是星期一,上次说的两个需求,解决了一个.在原来的页面增加了一个可以勾选的单选框用于完成,勾选对应的条件来渲染对应的页面,使用了简单的单选框radio_button来实现单选的提交,使用条件判断语句 ...
- [GRYZ2014]迷宫问题
设有一个N*N方格的迷宫,入口和出口分别在左上角和右上角,迷宫格子中分别放有0和1,0表示可走,1表示不能走,迷宫走的规则如图.当迷宫给出之后,找出一条从入口到出口的通路. 输入:N N*N的迷宫 输 ...
- bzoj 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居(set+并查集)
Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的 时候有一个独一无二的位置坐标Xi,Yi( ...
- HDU 4786 Fibonacci Tree (2013成都1006题) 最小生成树+斐波那契
题意:问生成树里能不能有符合菲波那切数的白边数量 思路:白边 黑边各优先排序求最小生成树,并统计白边在两种情况下数目,最后判断这个区间就可以.注意最初不连通就不行. #include <stdi ...
- Raspberry Pi Kernel Compilation 内核编译官方文档
elinux.org/Raspberry_Pi_Kernel_Compilation#Use_the_provided_compiler Software & Distributions: S ...