原文地址:传送门
之前也看了 linezero 大佬写的教程,但是总是没有成功写入日志文件。按照 曲廉卿 的已成功,以下正文:
最近研究了一下NLog的使用方式,简单的入了一下门。
实现的功能,对于不同的日志,进行不同的记录,分别有系统运行日志,和个人在程序中写的异常日志。发布之后放在了IIS上。进行查看日志的信息
参考了两篇博客。
1.http://www.voidcn.com/blog/aojiancc2/article/p-6672009.html 2.http://www.cnblogs.com/linezero/p/Logging.html
个人觉得还是第一篇写的详细。第二篇可能是大神写的吧,一些细节并没哟特别的注意到。
那两篇博客已经写很详细了,我再重复一下,以及提醒一下像我一样的小菜们,需要注意的事项,以及个人在其中的一些疑惑。
首先我们建一个Core 2.0的项目,由于目前2.0 没有正式发布,如果想用2.0 需要装preview版的vs
我们需要引入这些包,我们会用到。这是我的*.csproj文件的部分。(在这里需要注意下,如果是Core2.0的项目直接用2.0以上包,不然在vs中运行是没有问题的,在windows环境中运行也是没有问题的,但是到了Linux中就会出问题,在 restore 时,会给你报错,让你把包升级到2.0以上。这个问题自己原来也没有注意到,本来想着这些版本控制之类的东西,肯定是向下兼容的。可是前两天,在Linux上用docker 进行测试发布的时候就出现了这个问题。)
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview1-final" />
<PackageReference Include="NLog" Version="5.0.0-beta09" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.4.1" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>
打开我们的startUp.cs 文件
添加下边的代码
public void Configure(IApplicationBuilder app, IHostingEnvironment env ,ILoggerFactory loggerFactory)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//这是为了防止中文乱码
loggerFactory.AddNLog();//添加NLog
env.ConfigureNLog("nlog.config");//读取Nlog配置文件
//other Code
}
在ConfigServie方法中不需要进行依赖注入的配置
由于这里我们添加了读取Nlog的配置文件的信息
所以我们要添加“nlog.config的文件”
新建一个 xml文件 名称为 你的 env.ConfigureNLog("nlog.config");里边穿的字符串参数的名称。
1 <?xml version="1.0" encoding="utf-8" ?>
2 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 autoReload="true"
5 internalLogLevel="Warn"
6 internalLogFile="internal-nlog.txt">
7
8 <!--define various log targets-->
9 <targets>
10
11 <!--write logs to file-->
12 <target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log"
13 layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
14
15 <target xsi:type="File" name="ownFile-web" fileName="nlog-my-${shortdate}.log"
16 layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
17
18 <target xsi:type="Null" name="blackhole" />
19
20 </targets>
21
22 <rules>
23 <!--All logs, including from Microsoft-->
24 <logger name="*" minlevel="Trace" writeTo="allfile" />
25
26 <!--Skip Microsoft logs and so log only own logs-->
27 <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
28 <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
29 </rules>
30
31
32 </nlog>