本文参考连接html
框架选择:NLog数据库
安装方法,Nuget命令行:Install-Package NLog
缓存
e.Message
仅为异常描述,e.ToString()
能够打印异常堆栈。======= app start =======
,方便快速定位信息。Console.WriteLine()
,效率低。autoReload="true"
:配置修改是否自动加载。throwExceptions="false"
:日志出现异常时是否须要抛出异常,若配置为true日志记录异常时因为没有捕获异常,会致使程序挂掉。internalLogLevel=Debug
:表示nlog日志的执行日志记录等级,开发过程当中配置为Debug,上线后配置为Info。internalLogFile
:表示nlog日志的执行日志记录的位置。经过./XXXX的方式能够配置到程序的相对目录。日志一概保存到./Logs/日期/进程名.logaasync=true
:异步保存日志,从而防止日志影响业务性能。Level | FirstCharacter | Ordinal |
---|---|---|
Trace | T | 0 |
Debug | D | 1 |
Info | I | 2 |
Warn | W | 3 |
Error | E | 4 |
Fatal | F | 5 |
Off | O | 6 |
经过NLog.LogManager.GetLogger咱们能够获取一个日志对象示例。传入的参数为日志实例名,咱们能够在日志名中经过${logger}参数输出日志实例名。能够将不一样的日志保存到不一样的文件。网络
NLog经过target配置日志输入的目标。能够经过配置多个target将日志输入到多个目录,多个目标(文件,网络,数据库等)。如经过设置2个目标,将info和error日志分开保存。其中不少参数是共用的,咱们能够设置一个默认参数default-target-parameters,减小配置文件节点。 并发
xsi:type
:输入类型:app
name
:目标的名字,能够经过建立Rule规则限制目标的输出。 filename
:文件名,日志保存文件时能够保存到该文件中。文件名支持参数化,经过各类参数更方便的输出日志。 archiveFileName
:为了防止日志文件保存的太大,咱们将日志文件拆分保存。经过archiveFileName参数设置保存格式,具体格式能够到这里查看。 createDirs
:若设置的日志文件夹不存在,则自动建立文件夹。 keepFileOpen
:为了提升文件写入性能,避免每次写入文件都开关文件,将keepFileOpen
设置为true,咱们经过openFileCacheTimeout
参数定时关闭文件。 autoFlush
:为了提升日志写入性能,没必要每次写入日志都直接写入到硬盘上,将autoFlush
设置为false,咱们经过openFileFlushTimeout
参数定时写入文件。 openFileCacheTimeout
:将keepFileOpen
参数设置为false,则设置定时关闭日志。防止日志一直开着占用着。 openFileFlushTimeout
:将autoFlush
参数设置为false,则设置定时将日志从缓存写入到硬盘时间。 archiveAboveSize
:为了防止一个文件日志太大,咱们须要根据指定大小将日志拆文件保存。archiveAboveSize
参数的单位是字节。经过设置为10240=10KB,每一个日志大小达到10KB就会自动拆分文件,拆分后的文件名规则经过archiveFileName
设置,拆分文件名的规则经过archiveNumbering
设置,具体规则能够查看这里。 concurrentWrites
:支持多个并发一块儿写文件,提升文件写入性能。 encoding
: Nlog默认保存的编码格式为Encoding.Default,中文保存到日志中会出现乱码,将其设置为utf-8,就能够正常保存了。layout
:表示输出的格式,若为最简单的内容输入,则直接经过参数设置输入格式便可。除了最简单的文本格式还支持如下四种类型的数据,经过xsi:type
参数设置layout的格式,如xsi:type="JsonLayout"
:框架
咱们能够建立一系列规则约束输出的内容。方法是在NLog节点下添加rules节点,rules节点下能够添加多个logger节点,每一个logger节点为一条约束。异步
<rules> <logger name="*" minlevel="Debug" writeTo="file" /> </rules>