nlog nlog.web_在ASP.NET Core 3.0 Web App中使用NLog集成日志记录

nlog nlog.web

NLog:这是一个开放源代码日志记录框架,它提供了极大的灵活性和可配置的选项来记录您的应用程序的见解。 它允许同时选择多个目标,例如数据库,云服务,文件,控制台等,这样用户就不必在代码中维护不同的配置。 这是目前使用最广泛的日志记录框架。

一些重要的功能是:

  1. 易于配置
  2. 它基于模板
  3. 它具有预定义的布局,因此您可以使用自定义数据修改消息
  4. 它提供了结构化的日志记录

开源项目官方网站: https //nlog-project.org/
创建ASP.NET Core项目

步骤1:打开Visual Studio 2019并创建一个新项目。

步骤2:从项目模板中选择ASP.NET Core Web Application。

步骤3:选择项目的名称,然后单击Create(创建)按钮。

步骤4:选择Web Application Template并进行如下所示的适当选择。

步骤5:以上4个步骤将创建带有一些默认文件和文件夹的ASP.NET Core 3 Web应用程序。

由于我们必须将NLog集成到应用程序中,因此我们需要从NuGet软件包管理器中安装一些软件包。

1. NLog.Web.AspNetCore –这是将安装NLog软件包的软件包。

2. NLog.config –该软件包将添加一个配置文件,我们可以在其中定义NLog配置的所有规则和目标。 NLog库将从此文件读取所有配置。

第6步:添加所需的程序包后,让我们在NLog.config中创建配置,在此我们将定义一个目标,该目标会将日志写入本地系统上的文件。

将自动生成的代码替换为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"
      throwExceptions = "false"
      internalLogLevel = "Off" internalLogFile = "c:\temp\nlog-internal.log" >
 
   <targets>
    <target xsi:type="File" name="fileTarget" filename="..\logs\log.txt"></target>
  </targets>
 
  <rules>
    <logger name="*" minlevel="Trace" writeTo="fileTarget" />
  </rules>
</nlog>

我们还需要更改此文件的属性,以便可以在部署应用程序时将该文件复制到目录中。

右键单击NLog.config文件,然后选择属性选项,然后进行如下所示的更改。

步骤7:将目标添加到配置文件中的文件后,我们必须将NLog作为服务注册到Program.cs文件中,以便我可以捕获日志并将其发送到定义的目标。

用下面突出显示的内容替换Program.cs文件中的代码。

publicstatic IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging( ( hostingContext, logging ) =>
                {
                    logging.AddConfiguration(hostingContext.Configuration.GetSection( "Logging" ));
                    logging.AddDebug();
                    logging.AddNLog();
                })
                .ConfigureWebHostDefaults( webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

在创建WebHost时,我们在调用Startup.cs文件之前注入日志。 上面突出显示的ConfigureLogging方法是将日志添加到两个服务。

一个是Debug窗口,这是Visual Studio的功能,另一个是NLog。

AddNLog方法是我们在上述步骤中安装的Nuget软件包的一部分。

AddConfiguration方法试图读取默认情况下由Asp.Net Core项目模板创建的日志记录配置。

我们还可以在Startup.cs类中将NLog定义为服务。 在启动类之前调用​​此函数的原因是,有时在调用启动类之前可能会引起一些运行时问题,因此我们也可以捕获它们。

步骤8:现在运行该应用程序,您会发现在项目的bin文件夹中创建了一个日志文件。

注意:您可以在NLog.config的文件名属性中指定任何路径,这将在此处创建日志文件。 您可以在NLog配置文件中进行很多自定义。 在本文开始部分提到的asp.net mvc开发官方网站上查看它们。

翻译自: https://hackernoon.com/integrating-logging-using-nlog-in-aspnet-core-30-web-app-6f1v31be

nlog nlog.web

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用NLog日志记录到SqlServer的步骤: 1. 首先,需要在项目安装NLogNLog.Web.AspNetCore包。可以使用NuGet包管理器或在项目文件手动添加依赖项。 2. 在项目的appsettings.json文件添加以下NLog配置: ``` "NLog": { "targets": { "database": { "type": "Database", "dbProvider": "System.Data.SqlClient", "connectionString": "Server=[server];Database=[database];User Id=[user];Password=[password];", "commandText": "INSERT INTO [Logs] ([Date], [Level], [Logger], [Message], [Exception]) VALUES (@Date, @Level, @Logger, @Message, @Exception);", "parameter": [ { "name": "@Date", "layout": "${date}" }, { "name": "@Level", "layout": "${level}" }, { "name": "@Logger", "layout": "${logger}" }, { "name": "@Message", "layout": "${message}" }, { "name": "@Exception", "layout": "${exception}" } ] } }, "rules": [ { "logger": "*", "minLevel": "Trace", "writeTo": "database" } ] } ``` 3. 在Startup.cs文件添加以下代码: ```csharp public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { //... loggerFactory.AddNLog(); //... app.UseMiddleware<NLogMiddleware>(); //... } ``` 4. 创建一个名为Logs的表,用于存储日志记录。表结构应如下所示: ```sql CREATE TABLE [dbo].[Logs]( [Id] [int] IDENTITY(1,1) NOT NULL, [Date] [datetime2](7) NOT NULL, [Level] [nvarchar](50) NOT NULL, [Logger] [nvarchar](250) NOT NULL, [Message] [nvarchar](max) NOT NULL, [Exception] [nvarchar](max) NULL, CONSTRAINT [PK_Logs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ``` 5. 现在,可以在代码使用NLog记录日志了。例如: ```csharp private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("Hello, world!"); return View(); } ``` 这将在Logs表插入一条日志记录。 希望这可以帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值