Nlog是一款第三方的日志记录插件,netcore中有内置的日志记录文件。
NLog官方网址:https://nlog-project.org/
关于各项配置都可以详细阅读官方文档,以下是我配置的进攻大家参考
1.首先引入包

2.然后创建配置文件
配置文件在根目录下创建,创建一个XML格式的配置文件,名称必须是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\internal-nlog.txt"> <!-- enable asp.net core layout renderers --> <extensions> <add assembly="NLog.Web.AspNetCore"/> </extensions> <!-- the targets to write to --> <targets> <!-- write logs to file fileName:日志存储位置可任意更改 --> <target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" /> <!-- another file log, only own logs. Uses some ASP.NET core renderers --> <target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-own-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" /> </targets> <!-- rules to map from logger name to target --> <rules> <!--All logs, including from Microsoft--> <logger name="*" minlevel="Trace" writeTo="allfile" /> <!--Skip non-critical Microsoft logs and so log only own logs--> <logger name="Microsoft.*" maxlevel="Info" final="true" /> <!-- BlackHole without writeTo --> <logger name="*" minlevel="Trace" writeTo="ownFile-web" /> </rules> </nlog>
3.然后再program.cs类中加入以下配置
public static void Main(string[] args) { // NLog: 首先设置记录器以捕获所有错误 var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); try { logger.Debug("init main"); CreateHostBuilder(args).Build().Run(); } catch (Exception ex) { //NLog:捕获设置错误 logger.Error(ex, "Stopped program because of exception"); throw; } finally { // 确保在应用程序退出之前刷新并停止内部计时器/线程(避免Linux上出现分段错误) 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); }) //使用NLog日志记录 .UseNLog();
4.然后就可以放心使用了,他已经注入到容器中了,以下是使用案例

public void Configure(IApplicationBuilder app, IWebHostEnvironment env,ILogger<Startup> _logger) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } _logger.LogInformation("记录此处错误129873917931730106301606320101601"); _logger.LogWarning("记录此处warning错误129873917931730106301606320101601"); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); }
5.验证是正确的

浙公网安备 33010602011771号