聊聊.Net Core配置NLog
NLog是一个流行的日志记录库,它可以帮助我们在应用程序中记录日志。在本攻略中,我们将介绍如何在.Net Core应用程序中配置NLog,以便记录日志。以下是聊聊.Net Core配置NLog的完整攻略:
步骤一:安装NLog
首先,需要安装NLog。可以使用以下命令在.Net Core应用程序中安装NLog:
dotnet add package NLog.Web.AspNetCore
步骤二:创建NLog配置文件
接下来,需要创建一个NLog配置文件。可以使用以下代码创建一个名为“NLog.config”的NLog配置文件:
<?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"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target name="file" xsi:type="File" fileName="c:\temp\nlog.log" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
在上面的代码中,我们创建了一个名为“file”的目标,它将日志记录到“c:\temp\nlog.log”文件中。我们还创建了一个名为“*”的规则,它将所有日志记录到“file”目标中。
步骤三:配置NLog
接下来,需要在.Net Core应用程序中配置NLog。可以使用以下代码在“Program.cs”文件中配置NLog:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using NLog.Web;
namespace MyApplication
{
public class Program
{
public static void Main(string[] args)
{
var logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
try
{
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
logger.Error(ex, "Stopped program because of exception");
throw;
}
finally
{
NLog.LogManager.Shutdown();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog();
}
}
在上面的代码中,我们使用 NLogBuilder.ConfigureNLog 方法加载 NLog 配置文件,并使用 GetCurrentClassLogger 方法获取当前类的日志记录器。我们还在 CreateHostBuilder 方法中使用 UseNLog 方法配置 NLog。
示例一:记录日志
以下是一个示例,演示如何在.Net Core应用程序中记录日志:
- 创建一个名为“NLogDemo”的新.Net Core应用程序。
- 在“NLogDemo”项目中,打开“Program.cs”文件,并将以下代码添加到该文件中:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using NLog.Web;
using System;
namespace NLogDemo
{
public class Program
{
public static void Main(string[] args)
{
var logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
try
{
logger.Info("Application started");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
logger.Error(ex, "Stopped program because of exception");
throw;
}
finally
{
NLog.LogManager.Shutdown();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog();
}
}
在上面的代码中,我们在“Application started”消息之前使用 logger.Info 方法记录日志。
- 在“NLogDemo”项目中,打开“HomeController.cs”文件,并将以下代码添加到该文件中:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace NLogDemo.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index page visited");
return View();
}
}
}
在上面的代码中,我们在 Index 操作方法中使用 _logger.LogInformation 方法记录日志。
- 在“NLogDemo”项目中,打开“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"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target name="file" xsi:type="File" fileName="c:\temp\nlog.log" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
在上面的代码中,我们将日志记录到“c:\temp\nlog.log”文件中。
- 在浏览器中,导航到“http://localhost:5000/”。
- 在“c:\temp\nlog.log”文件中查看日志记录。
在上面的示例中,我们在“Application started”消息之前使用 logger.Info 方法记录日志,并在 Index 操作方法中使用 _logger.LogInformation 方法记录日志。我们还将日志记录到“c:\temp\nlog.log”文件中。
示例二:使用NLog记录异常
以下是一个示例,演示如何使用NLog记录异常:
- 创建一个名为“NLogDemo”的新.Net Core应用程序。
- 在“NLogDemo”项目中,打开“HomeController.cs”文件,并将以下代码添加到该文件中:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
namespace NLogDemo.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
try
{
throw new Exception("Something went wrong");
}
catch (Exception ex)
{
_logger.LogError(ex, "An error occurred");
}
return View();
}
}
}
在上面的代码中,我们在 Index 操作方法中使用 _logger.LogError 方法记录异常。
- 在“NLogDemo”项目中,打开“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"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target name="file" xsi:type="File" fileName="c:\temp\nlog.log" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
在上面的代码中,我们将日志记录到“c:\temp\nlog.log”文件中。
- 在浏览器中,导航到“http://localhost:5000/”。
- 在“c:\temp\nlog.log”文件中查看日志记录。
在上面的示例中,我们在 Index 操作方法中使用 _logger.LogError 方法记录异常,并将日志记录到“c:\temp\nlog.log”文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:聊聊.Net,Core配置Nlog.md的问题 - Python技术站