当你在谷歌搜索 Application Loggin in C#,排在最前面的是这个 .NET Logging Tools and Libraries ,点击进去你会发现里面收录了不错的日记工具及文章。
这里我要介绍的是NLog。log4net 也是一个不错的选择。
NLog 官网:http://nlog-project.org/
NLog Github: https://github.com/NLog/NLog/wiki/Tutorial
先介绍使用方法:
1.安装
用Nuget 安装 NLog.Config。
Install-Package NLog.Config
这样他就会把需要的包都安装引入进到所安装的项目了。
2.配置
配置日记记录的形式,存储的地方等。安装好NLog之后,会自动生成一个NLog.config
打开它,里面其实会有详细的Demo教你怎么配置。
首先<target>, target 说明日志存放的地方。
<!-- 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}" /> --> <target xsi:type="File" name="debugfile" fileName="${basedir}/logs/${shortdate}.debug.html" layout="Date: ${longdate} Logger: ${logger} Level: ${uppercase:${level}} <BR> Message: ${message} <BR><HR Size=1>"/> <target xsi:type="File" name="errorfile" fileName="${basedir}/logs/${shortdate}.error.html" layout="Date: ${longdate} Logger: ${logger} Level: ${uppercase:${level}} <BR> Message: ${message} <BR><HR Size=1>" />
其次是定义规则,日记也分为几个级别(Debug,Info,Warn,Error,Fatal 从左到右级别增加),不同的日记可以分开管理记录。
<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" /> --> <logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debugfile" /> <logger name="*" minlevel="Info" writeTo="errorfile"/> </rules>
最后就是调用了。
using System.Web.Mvc; using NLog; namespace App.Controllers { public class BaseController : Controller { protected Logger Log { get; private set; } protected BaseController() { Log = LogManager.GetLogger(GetType().FullName); } } }
using System; namespace App.Controllers { public class UserController : BaseController { public void Index() { Log.Debug("This is Debug"); Log.Error(new Exception("除数不能为零")); Log.Info("使用起来简单吧"); } } }
出来的效果:
2016-06-13.debug.html
Date: 2016-06-13 14:47:17.5376 Logger: App.Controllers.UserController Level: DEBUG <BR> Message: This is Debug <BR><HR Size=1>
2016-06-13.error.html
Date: 2016-06-13 14:47:17.5486 Logger: App.Controllers.UserController Level: ERROR <BR> Message: System.Exception: 除数不能为零 <BR><HR Size=1> Date: 2016-06-13 14:47:17.5486 Logger: App.Controllers.UserController Level: INFO <BR> Message: 使用起来简单吧 <BR><HR Size=1>
上面target 只有 file。其实还有很多种形式的输出,这个要在下一篇再写了。