NLog写日志
1、nuget引用NLog.Web.AspNetCore、System.Data.SqlClient
2、创建一个CfgFile文件夹,将NLog.confi配置文件放在里面。注意右键NLog.cofig,“复制到输出目录”改为“始终复制”
NLog.cofig配置如下:

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 xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 5 autoReload="true" 6 throwExceptions="false" 7 internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 8 9 <variable name="myvar" value="myvalue"/> 10 11 <targets> 12 <!--Error保存至文件--> 13 <target name="error_file" xsi:type="File" maxArchiveFiles="30" encoding="utf-8" 14 fileName="${basedir}/NLogs/${date:yyyyMMdd}_Error.TXT" 15 archiveFileName="${basedir}/NLogs/${date:yyyyMMdd}_Error.{#}.TXT" 16 archiveDateFormat="yyyyMMdd" 17 archiveAboveSize="104857600" 18 archiveNumbering="Sequence" 19 layout="${date:yyyy-MM-dd HH\:mm\:ss} ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace}" /> 20 <!--Trace保存至文件--> 21 <target name="trace_file" xsi:type="File" maxArchiveFiles="30" encoding="utf-8" 22 fileName="${basedir}/NLogs/${date:yyyyMMdd}_Trace.TXT" 23 archiveFileName="${basedir}/NLogs/${date:yyyyMMdd}_Trace.{#}.TXT" 24 archiveDateFormat="yyyyMMdd" 25 archiveAboveSize="104857600" 26 archiveNumbering="Sequence" 27 layout="${date:yyyy-MM-dd HH\:mm\:ss} ${uppercase:${level}}: ${message}" /> 28 <!--配置Sql Server--> 29 <target name="database" xsi:type="Database" 30 dbProvider="System.Data.SqlClient.SqlConnection,System.Data.SqlClient" 31 connectionString="Data Source=DESKTOP-1Q7NAPD;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=123456" 32 commandText="insert into NLog (Application, Logged, Level, Message,Logger, CallSite, Exception) values (@Application, @Logged, @Level, @Message,@Logger, @Callsite, @Exception);"> 33 <parameter name="@application" layout="AspNetCoreNlog" /> 34 <parameter name="@logged" layout="${date}" /> 35 <parameter name="@level" layout="${level}" /> 36 <parameter name="@message" layout="${message}" /> 37 <parameter name="@logger" layout="${logger}" /> 38 <parameter name="@callSite" layout="${callsite:filename=true}" /> 39 <parameter name="@exception" layout="${exception:tostring}" /> 40 </target> 41 </targets> 42 43 <rules> 44 <!-- add your logging rules here --> 45 <logger name="*" minlevel="Trace" maxlevel="Warn" writeTo="trace_file" /> 46 <!--<logger name="*" minlevel="Debug" writeTo="debugger" />--> 47 <logger name="*" minlevel="Error" writeTo="error_file" /> 48 <!--配置Sql Server--> 49 <logger name="*" minlevel="Info" writeTo="database" /> 50 </rules> 51 </nlog>
注意数据库连接配置
4、创建数据库Test,创建表NLog

1 USE [Test] 2 GO 3 4 /****** Object: Table [dbo].[NLog] Script Date: 2022/5/1 20:53:07 ******/ 5 SET ANSI_NULLS ON 6 GO 7 8 SET QUOTED_IDENTIFIER ON 9 GO 10 11 CREATE TABLE [dbo].[NLog]( 12 [Id] [int] IDENTITY(1,1) NOT NULL, 13 [Application] [nvarchar](50) NOT NULL, 14 [Logged] [datetime] NOT NULL, 15 [Level] [nvarchar](50) NOT NULL, 16 [Message] [nvarchar](max) NOT NULL, 17 [Logger] [nvarchar](250) NULL, 18 [CallSite] [nvarchar](max) NULL, 19 [Exception] [nvarchar](max) NULL, 20 CONSTRAINT [PK_NLog] PRIMARY KEY CLUSTERED 21 ( 22 [Id] ASC 23 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 24 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 25 26 GO
5、修改Programs.cs
builder.Logging.AddNLog("CfgFile/NLog.config");
6、添加LogController控制器

1 using Microsoft.AspNetCore.Mvc; 2 3 namespace Project6.Controllers 4 { 5 public class LogController : Controller 6 { 7 private readonly ILogger _logger; 8 private readonly ILoggerFactory _loggerFactory; 9 10 public LogController(ILogger<LogController> logger,ILoggerFactory loggerFactory) 11 { 12 this._logger = logger; 13 this._loggerFactory = loggerFactory; 14 15 ILogger<LogController> _logger2 = loggerFactory.CreateLogger<LogController>(); 16 17 this._logger.LogInformation($"{this.GetType().Name}: 被构造"); 18 _logger2.LogInformation($"{this.GetType().Name}被Logger2构造"); 19 20 } 21 public IActionResult Index() 22 { 23 this._logger.LogInformation($"index被执行了"); 24 25 ILogger<LogController> logger = this._loggerFactory.CreateLogger<LogController>(); 26 logger.LogInformation($"index被factory执行了"); 27 28 return View(); 29 } 30 31 public IActionResult Level() 32 { 33 _logger.LogDebug("this is Debug"); 34 _logger.LogInformation("this is Info"); 35 _logger.LogWarning("this is Warn"); 36 _logger.LogError("this is Error"); 37 _logger.LogTrace("this is Trace"); 38 _logger.LogCritical("this is Critical"); 39 40 return new JsonResult(new { sucess = true }); 41 } 42 } 43 }
7、执行/Log/index和/Log/Level
查看Debug\net6.0\NLogs目录生成相应的日志
查看表NLog
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现