.NET Core 2.0 MVC / Web API使用NLog
1. 项目,添加NuGet引用
Install-Package NLog.Web.AspNetCore Install-Package NLog
2. 创建一个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="off" internalLogFile="Log\internal-nlog.txt"> <!--internalLogLevel设置为off,即关闭内部日志记录--> <!-- 启用asp.net核心布局渲染器 --> <extensions> <add assembly="NLog.Web.AspNetCore"/> </extensions> <!-- 要写入的目标 --> <targets> <target xsi:type="File" name="ApiLog" fileName="Log\${shortdate}.log" layout="${longdate} ${level} ${message}"/> </targets> <!-- 从记录器名称映射到目标的规则 --> <rules> <!--final="true",不指定writeto,表示跳过所有微软相关(Microsoft.*)的日志--> <logger name="Microsoft.*" maxlevel="Info" final="true" /> <!-- 此条表示记录所有日志,并且指定最低和最高日志记录级别,绑定到target——>ApiLog --> <logger name="*" minlevel="Trace" maxlevel="Fatal" writeTo="ApiLog" /> </rules> </nlog>
创建完毕后,允许nlog.config启用复制到bin文件夹 ,有两种方式,经过本人尝试,建议使用第二种方法,不然Log文件夹会在项目根目录的同一级文件夹中创建
- 点击nlog.config,右键——属性——复制到输出目录——始终复制
- 编辑.csproj文件,添加以下内容
< ItemGroup > < Content Update = “ nlog.config ” CopyToOutputDirectory = “ PreserveNewest ” /> </ ItemGroup >
3.更新Program.cs文件,添加对NLog的引用,并设置日志记录范围
public class Program { public static void Main(string[] args) { //NLog: 首先设置记录器以捕获所有错误 var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .ConfigureLogging(logging => { logging.ClearProviders(); logging.SetMinimumLevel(LogLevel.Trace); }) .UseNLog() // NLog: 设置NLog进行依赖注入 .Build(); }
4. 在项目中调用
private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("Ha ha,I'm Home Index Page"); return View(); }
5. 到这里就能在项目的bin\Debug\netcoreapp2.0\Log文件夹下看到你的日志记录了