首页 > 其他分享 >.NET7后端框架:NLog

.NET7后端框架:NLog

时间:2023-01-29 16:12:03浏览次数:57  
标签:Core AMO 后端 app NLog NET7 using builder

前言

继上一篇《.NET7后端框架:一句话启动》后,继续完善后端框架。查日志作为码农的日常,所以我们先引入日志包,这里我们使用 NLog 。

添加依赖项

添加包的方式有两种,一种是通过 NuGet ,一种是直接修改 .csproj 文件

1、通过NuGet引入包

右键 AMO.Core - 依赖项 - 管理NuGet程序包,搜索“NLog”,将 NLog、NLog.Web.AspNetCore两个包安装进来。

2、通过修改 AMO.Core.csproj 文件

点击 AMO.Core 项目,或右键 AMO.Core 项目 - 编辑项目文件,在csproj文件中添加以下代码:

  <ItemGroup>
    <PackageReference Include="NLog.Web.AspNetCore" Version="5.*" />
    <PackageReference Include="NLog" Version="5.*" />
  </ItemGroup>

创建一个 nlog.config 文件

右键 AMO.API 项目根目录,创建 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="Info"
      internalLogFile="${basedir}\Log\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  -->
    <target xsi:type="File" name="allfile" fileName="${basedir}\Log\nlog-all-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
  </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>

修改 AppStart.cs 文件

.NET6 及以上版本配置 NLog 的方式和 .NET6 以下版本略有不同,以下是 .NET6 及以上版本的配置。

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog;
using NLog.Web;

namespace AMO.Core.StartupExtensions
{
    /// <summary>
    /// 启动程序
    /// </summary>
    public static class AppStart
    {
        /// <summary>
        /// 运行程序
        /// </summary>
        /// <param name="builder">WebApplicationBuilder</param>
        public static void Run(this WebApplicationBuilder builder)
        {
            var logger = NLog.LogManager.Setup().GetCurrentClassLogger();
            logger.Debug("[启动服务]");
            try
            {
                builder.Services.AddControllers();
                builder.Services.AddEndpointsApiExplorer();
                builder.Services.AddSwaggerGen();

                // 配置 NLog
                builder.Logging.ClearProviders();
                builder.Host.UseNLog();

                var app = builder.Build();
                if (app.Environment.IsDevelopment())
                {
                    app.UseSwagger();
                    app.UseSwaggerUI();
                }
                app.UseHttpsRedirection();
                app.UseAuthorization();
                app.MapControllers();
                app.Run();
            }
            catch (Exception ex)
            {
                logger.Error(ex, "[因异常停止服务]");
                throw;
            }
            finally
            {
                NLog.LogManager.Shutdown();
            }
        }
    }
}

最后

以上,就完成了 NLog 的配置,编译运行,即可在 bin\Debug\net7.0 文件夹下生成 Log 文件夹,里面记录着程序运行过程中的各种日志。

题外

近期我司开源了一套简洁又功能完整的WMS系统: ModernWMS,采用 Vue3 + TS + Vuetify + .Net7 + EF Core 框架。欢迎来踩。
在线体验地址: https://wmsonline.ikeyly.com/
Github: https://github.com/fjykTec/ModernWMS
Gitee:https://gitee.com/modernwms/ModernWMS

标签:Core,AMO,后端,app,NLog,NET7,using,builder
From: https://www.cnblogs.com/amo35/p/17072969.html

相关文章