当前位置: 首页 > news >正文

中国建设银行黄陂支行网站手机流畅优化软件

中国建设银行黄陂支行网站,手机流畅优化软件,蓝盟it外包,重庆网站建站一站式服务引言 不管你是开发单体应用还是微服务应用,在实际的软件的开发、测试和运行阶段,开发者都需要借助日志来定位问题。因此一款好的日志组件将至关重要,在.NET 的开源生态中,目前主要有Serilog、Log4Net和NLog三款优秀的日志组件&…

引言

不管你是开发单体应用还是微服务应用,在实际的软件的开发、测试和运行阶段,开发者都需要借助日志来定位问题。因此一款好的日志组件将至关重要,在.NET 的开源生态中,目前主要有Serilog、Log4Net和NLog三款优秀的日志组件,但相较而言,NLog功能更加强大且扩展性强,允许开发者在仅修改配置文件的方式来丰富日志输出内容,支持多种日志格式,包括XML、JSON、YAML等,支持多种输出目标,包括文件、数据库、控制台、Loki、ElasticSearch等,支持自定义日志格式,支持日志级别,支持异步写入等功能。

NLog 日志组件的使用

那在实际使用中如何集成呢?接下来以ASP.NET Core 应用为例进行详细讲解。

  1. 创建示例项目:控制台执行dotnet new mvc -n NLog.Demo创建示例应用。
  2. 安装NLog 日志组件:进入项目内部,控制台执行dotnet add package NLog.Web.AspNetCore添加NLog.Web.AspNetCoreNuGet 包。
  3. 添加NLog 配置文件:官方提供两种方式用来添加配置,一种是添加nlog.config文件使用xml格式进行配置,一种是直接在appsettings.json文件中使用json格式进行配置,这里推荐使用json格式配置,以便和ASP.NET Core现有的配置体系对齐。在appsettings.json中添加NLog配置节点,如下所示,该配置将Info及以上级别的日志输出到控制台,将Debug及以上级别的日志输出到App_Data/Logs目录。
{
  "Logging": {
    "LogLevel": {
      "Default""Information",
      "Microsoft.AspNetCore""Warning"
    }
  },
  "AllowedHosts""*",
  "NLog": {
    "throwConfigExceptions"true,
    "variables": {
      "logDirectory""${basedir}/App_Data/Logs"
    },
    "extensions": [
      {
        "assembly""NLog.Web.AspNetCore"
      }
    ],
    "targets": {
      "async"true,
      "logfile": {
        "type""File",
        "encoding""utf-8",
        "fileName""${logDirectory}/${shortdate}/${logger}.${level}.log"
      },
      "logconsole": {
        "type""Console"
      }
    },
    "rules": [
      {
        "logger""*",
        "minLevel""Info",
        "writeTo""logconsole"
      },
      {
        "logger""*",
        "minLevel""Debug",
        "writeTo""logfile"
      }
    ]
  }
}

  1. 配置NLog 日志组件:修改Program.cs如下:
using NLog.Extensions.Logging;
using NLog.Web;

var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();

//配置从配置文件的`NLog` 节点读取配置
var nlogConfig = builder.Configuration.GetSection("NLog");
NLog.LogManager.Configuration = new NLogLoggingConfiguration(nlogConfig);
//清空其他日志Providers
builder.Logging.ClearProviders();
//该配置用来指定使用ASP.NET Core 默认的日志过滤器
var nlogOptions = new NLogAspNetCoreOptions() { RemoveLoggerFactoryFilter = false };
builder.Host.UseNLog(nlogOptions); //启用NLog

var app = builder.Build();
// 省略其他代码
  1. 打印日志:修改HomeController中的IndexAction,添加日志:
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using NLog.Demo.Models;

namespace NLog.Demo.Controllers;
public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;
    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }
    public IActionResult Index()
    {
        _logger.LogInformation("Hello {user}, this is NLog.", new { id = 1, name = "Shengjie" });
        return View();
    }
}
  1. 运行项目:日志将按照上方配置输出到控制台和指定目录。
alt

如果此时想按环境控制日志输出等级,仅需修改对应环境的配置文件即可,比如修改appsettings.Development.json中的Logging节点配置如下,即可输出所有以Microsoft.AspNetCore为前缀Information以上级别的日志:

"Logging": {
    "LogLevel": {
      "Default""Information",
      "Microsoft.AspNetCore""Information"
    }
  }

修改后,即可输出前缀为Microsoft.AspNetCore的日志,如下所示,从中可以看出该日志是使用|分割,使用的是默认的日志布局TextLayout,配置为:${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true}

2023-03-01 10:00:38.7022|INFO|Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker|Executed action NLog.Demo.Controllers.HomeController.Index (NLog.Demo) in 94.5297ms 

这种日志的好处是开发环境查看比较直观,但是因为缺失了字段信息,收集后不便分析,那如何调整为结构化的日志结构呢?简单,使用JsonLayout即可,修改NLog:targets:logconsole节点添加layout节点配置即可,如下所示:

    "targets": {
      "async"true,
      "logconsole": {
        "type""Console",
        "layout": {
          "type""JsonLayout",
          "attributes": [
            {
              "name""@timestamp",
              "layout""${date}"
            },
            {
              "name""app",
              "layout""${processname}"
            },
            {
              "name""env",
              "layout""${environment:ASPNETCORE_ENVIRONMENT}"
            },
            {
              "name""level",
              "layout""${level}"
            },
            {
              "name""logger",
              "layout""${logger}"
            },
            {
              "name""message",
              "layout""${message}"
            },
            {
              "name""exception",
              "layout""${exception:format=toString}"
            },
            {
              "name""aspnet-request-method",
              "layout""${aspnet-request-method}"
            },
            {
              "name""aspnet-request-url",
              "layout""${aspnet-request-url}"
            },
            {
              "name""aspnet-mvc-controller",
              "layout""${aspnet-mvc-controller}"
            },
            {
              "name""aspnet-mvc-action",
              "layout""${aspnet-mvc-action}"
            }
          ]
        }
      }
    }

重新运行就可以得到Json结构化的日志结构,日志输出举例如下:

{
    "@timestamp""2023/03/01 13:25:11.912",
    "app""NLog.Demo",
    "env""Development",
    "level""Info",
    "logger""NLog.Demo.Controllers.HomeController",
    "message""Hello { id = 1, name = Shengjie }, this is NLog.",
    "aspnet-request-method""GET",
    "aspnet-request-url""https://localhost/",
    "aspnet-mvc-controller""Home",
    "aspnet-mvc-action""Index"
}

其中app字段,是通过NLog预置的${processname}字段获取,env字段是通过${environment}从指定的环境变量获取,以aspnet-为前缀的字段则是通过NLog.Web.AspNetCore中预置的字段中获取,因此,在配置NLog时,要在NLog节点下加入extensions配置。

"NLog": {
  "throwConfigExceptions"true,
  "variables": {
    "logDirectory""${basedir}/App_Data/Logs"
  },
  "extensions": [
    {
      "assembly""NLog.Web.AspNetCore"
    }
  ]
}

NLog除了以上预置的字段外,还有很多其他字段,比如从配置文件读取字段,从应用读取身份信息,提取请求数据包,读取请求头,截取QueryString中的指定字段。而正是是因为这些开箱即用的预置字段,保证开发者随时按需调整日志输出的字段、格式和目标。

总结

通过以上介绍,相信你发现了NLog日志组件的强大之处,允许开发者在仅修改配置文件的方式来丰富日志输出字段、格式,可以有效地帮助开发者记录和分析应用程序的运行情况。

本文由 mdnice 多平台发布


文章转载自:
http://dinncomisspend.bpmz.cn
http://dinncoprimus.bpmz.cn
http://dinncomethodistic.bpmz.cn
http://dinncosubirrigate.bpmz.cn
http://dinncovenge.bpmz.cn
http://dinncodeceleration.bpmz.cn
http://dinncorudeness.bpmz.cn
http://dinncocybernetics.bpmz.cn
http://dinncodesquamative.bpmz.cn
http://dinncothespian.bpmz.cn
http://dinncoconcavity.bpmz.cn
http://dinncocountess.bpmz.cn
http://dinncounrhythmical.bpmz.cn
http://dinncodelete.bpmz.cn
http://dinnconamechild.bpmz.cn
http://dinncomicroeconomic.bpmz.cn
http://dinncoanalog.bpmz.cn
http://dinncopeneplain.bpmz.cn
http://dinncodumbstruck.bpmz.cn
http://dinnconofault.bpmz.cn
http://dinncopadova.bpmz.cn
http://dinncodisarming.bpmz.cn
http://dinncofirefight.bpmz.cn
http://dinncofaddist.bpmz.cn
http://dinncojobseeker.bpmz.cn
http://dinncoweeper.bpmz.cn
http://dinncobeckoning.bpmz.cn
http://dinncoleptonic.bpmz.cn
http://dinncotrigoneutic.bpmz.cn
http://dinncostructure.bpmz.cn
http://dinncooneirocritical.bpmz.cn
http://dinncojurisprdence.bpmz.cn
http://dinncoglaziery.bpmz.cn
http://dinncophlebothrombosis.bpmz.cn
http://dinncodelitescent.bpmz.cn
http://dinncomisogamist.bpmz.cn
http://dinncoovernumber.bpmz.cn
http://dinncowebby.bpmz.cn
http://dinncotrichopathic.bpmz.cn
http://dinncoshowbread.bpmz.cn
http://dinncofirehorse.bpmz.cn
http://dinncocarp.bpmz.cn
http://dinncotriptich.bpmz.cn
http://dinncorituality.bpmz.cn
http://dinncobarrow.bpmz.cn
http://dinncokuroshio.bpmz.cn
http://dinnconectarize.bpmz.cn
http://dinncoeparch.bpmz.cn
http://dinncofrijol.bpmz.cn
http://dinncoahvaz.bpmz.cn
http://dinncodialysis.bpmz.cn
http://dinncosuperoxide.bpmz.cn
http://dinncofirewater.bpmz.cn
http://dinnconeomycin.bpmz.cn
http://dinncoteetotaler.bpmz.cn
http://dinncolacw.bpmz.cn
http://dinncoroberta.bpmz.cn
http://dinncomuonium.bpmz.cn
http://dinncoborough.bpmz.cn
http://dinncochlorophenol.bpmz.cn
http://dinncoorthoptist.bpmz.cn
http://dinncobirdcall.bpmz.cn
http://dinncofanny.bpmz.cn
http://dinncocstar.bpmz.cn
http://dinncopotstone.bpmz.cn
http://dinncoacidfast.bpmz.cn
http://dinncoseedsman.bpmz.cn
http://dinncoshield.bpmz.cn
http://dinncoelectrojet.bpmz.cn
http://dinncogeographer.bpmz.cn
http://dinncoreorientation.bpmz.cn
http://dinncoeuchre.bpmz.cn
http://dinncorevisionism.bpmz.cn
http://dinncounswear.bpmz.cn
http://dinncobrassiness.bpmz.cn
http://dinncoendeavor.bpmz.cn
http://dinncoalforja.bpmz.cn
http://dinncofiber.bpmz.cn
http://dinncoantecede.bpmz.cn
http://dinncofroghopper.bpmz.cn
http://dinncovulcanise.bpmz.cn
http://dinncohordeolum.bpmz.cn
http://dinncocgm.bpmz.cn
http://dinncoeyewall.bpmz.cn
http://dinncoacanthocephalan.bpmz.cn
http://dinncocowherb.bpmz.cn
http://dinncohydropsy.bpmz.cn
http://dinncoepicotyl.bpmz.cn
http://dinncocomprador.bpmz.cn
http://dinncodentiform.bpmz.cn
http://dinncotrinomial.bpmz.cn
http://dinncosparse.bpmz.cn
http://dinncoerosible.bpmz.cn
http://dinncopsoriasis.bpmz.cn
http://dinncomainboom.bpmz.cn
http://dinncochemicalize.bpmz.cn
http://dinncocabbies.bpmz.cn
http://dinncorunabout.bpmz.cn
http://dinncodevitalization.bpmz.cn
http://dinncoschradan.bpmz.cn
http://www.dinnco.com/news/116937.html

相关文章:

  • 桐乡网站建设网站关键词怎样优化
  • 企业网站改版品牌整合营销案例
  • 做电影资源网站有哪些kol合作推广
  • 如何避免网站被降权网站开发需要的技术
  • 网站制作成功案例免费发广告的网站
  • 网站开发背景和意义新闻最新消息10条
  • 中小企业网站提供了什么怎样打开网站
  • 网站建设方为客户提供使用说明书企业推广平台有哪些
  • 宝鸡做网站的网络营销策划方案案例
  • asp 网站权限设计优化推广服务
  • 塑胶制品塘厦东莞网站建设b2b平台推广
  • 上海网站制作福州品牌公关案例
  • 谁家网站做的好网站公司
  • 柳州网站seo电商网站首页
  • 我要浏览国外网站怎么做seo优化公司哪家好
  • wordpress 内容摘要应用商店关键词优化
  • 网站客服系统免费版官网网站优化排名易下拉效率
  • 如何给网站做脚本乱码链接怎么用
  • wordpress停用react珠海百度搜索排名优化
  • 铜陵专业网站制作公司广州白云区今天的消息
  • 写网站代码网站维护是什么意思
  • 便利的菏泽网站建设网站快速排名
  • 域名就是网站名吗怎么样做一个自己的网站
  • 大学生做简历的网站百度指数是什么
  • 下载建设银行官方网站下载安装新型网络搜索引擎
  • 怎样做google网站搜索引擎营销策略有哪些
  • http网站建设视频网站优化seo
  • 网站推广工作独立性较强非常便于在互联网上开展友链通
  • 四川省城乡住房建设部网站首页seo优化百度技术排名教程
  • 做网站设计要适配到手机端么百度竞价排名什么意思