代码改变世界

在.net core web 项目中使用Nlog记录日志

2018-12-19 13:55  tshaoguo  阅读(2612)  评论(1编辑  收藏  举报

第1步,添加NLog.Web.AspNetCore包引用

方法1

在项目上右击“依赖项”---“管理Nuget程序包(N)…”,然后在浏览对话框中输入“NLog.Web.AspNetCore”查找包,找到后选中并单击“安装”。

 

 

方法2

或者直接在包管理器控制台输入以下命令:

Install-Package NLog.Web.AspNetCore

 

 

  

第2步,添加Nlog.config配置文件

(1)在项目名称上击右键,选择 ”添加” --- “新建项”。

 

 

(2)在弹出的“添加新项”对话框中左边选择“ASP.NET Core”,右边选择“XML文件” ,“名称”框中输入“Nlog.config”,最后单击“添加”按钮。

 

 

(3)修改刚添加的Nlog.config文件内容如下:

配置文件内容:

<?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 xsi:type="File"

                name="logfile"

                fileName="${basedir}/logs/${shortdate}.log"

                keepFileOpen="false"

                layout="${longdate}|${callsite:fileName=True}

                |${uppercase:${level}}|${message} ${exception}" />

        <target xsi:type="File"

                name="debugfile"

                fileName="${basedir}/logs/${shortdate}_debug.log"

                keepFileOpen="false"

                layout="${longdate}|${callsite:fileName=True}

                |${uppercase:${level}}|${message} ${exception}" />

    <target xsi:type="File"

            name="errfile"

            fileName="${basedir}/logs/${shortdate}_error.log"

            keepFileOpen="false"

            layout="${longdate}|${callsite:fileName=True}

            |${uppercase:${level}}|${message} ${exception}" />

  </targets>

    <rules>

    <logger name="*" level="Debug" writeTo="debugfile" />

      <logger name="*" level="Error" writeTo="errfile" />

    <logger name="*" minlevel="Trace" writeTo="logfile" />

    </rules>

</nlog>

 

(4)修改Nlog.config文件属性“复制到输出目录”为“始终复制”(这一步很重要,否则运行时会报找不到文件的异常).

 

 

 

 

第3步,在项目中打开Startup.cs文件,修改Configure方法

(1)   先给Configure方法增加IloggerFactory loggerFactory参数注入日志对象,此时增加的代码会报错,需在类文件头部添加引用代码:

using Microsoft.Extensions.Logging;

 

 

(2)   接着在Configure方法内部增加如下两行代码:

loggerFactory.AddNLog();//使用NLog作为日志记录工具  

env.ConfigureNLog("Nlog.config");  //引入Nlog配置文件

注意:配置文件名为 ”Nlog.config” ,则env.ConfigureNLog("Nlog.config")这行代码可以不需要(Nlog默认找的就是Nlog.config文件)。如果是其他名字,则必须加上这一行代码。

添加以上代码后会报错,需在类文件头部添加如下引用代码:

using NLog.Extensions.Logging;

using NLog.Web;

 

 

第4步,在构造函数中注入日志对象(以Home控制器为例)。

ILogger<HomeController> logger;

public HomeController(ILogger<HomeController> _logger)

{

    logger = _logger;

}

增加代码后程序会报错,需在类文件头部增加如下引用代码:

using Microsoft.Extensions.Logging;

 

代码如下图所示:

 

 

第5步:在控制器的Index方法中增加写日志的测试方法。

增加的代码如下:

public IActionResult Index()

{

    logger.LogInformation("Index Begin...");

    logger.LogTrace("Index Begin...");

    logger.LogDebug("Index Begin...");

    logger.LogError("Index Begin...");

 

    return View();

}

 

如下图所示:

 

 

第6步:运行程序测试日志记录是否成功。

运行项目后,打开根目录下的:bin\Debug\netcoreapp2.2\logs

子目录,即可以看到生成的日志文件