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>
View Code
复制代码

注意数据库连接配置

 

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
View Code
复制代码

 

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 }
View Code
复制代码

7、执行/Log/index和/Log/Level

查看Debug\net6.0\NLogs目录生成相应的日志
查看表NLog

 

posted @   ziff123  阅读(102)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示