广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET Core记录日志
  • 623
分享到

ASP.NET Core记录日志

2024-04-02 19:04:59 623人浏览 八月长安
摘要

目录1.前言2.添加日志提供程序3.创建日志3.1启动时(Startup)创建日志3.2在程序中(Program)创建日志4.Configuration5.日志级别6.内置日志记录提

1.前言

ASP.net core支持适用于各种内置和第三方日志记录提供应用程序的日志记录api。本文介绍了如何将日志记录API与内置提供应用程序一起使用。

2.添加日志提供程序

日志记录提供应用程序显示或存储日志。例如,控制台提供应用程序在控制台上显示日志,Azure Application Insights提供应用程序将这些日志存储在Azure Application Insights中。要添加提供应用程序,请在Program.cs中调用提供程序的Add{provider name}扩展方法:

public static void Main(string[] args)
{
    var WEBHost = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostinGContext, config) =>
        {
            var env = hostingContext.HostingEnvironment;
            config.AddJSONFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddJsonFile($"appsettings.{env.EnvironmentName}.json",
                      optional: true, reloadOnChange: true);
            config.AddEnvironmentVariables();
        })
        .ConfigureLogging((hostingContext, logging) =>
        {
            //添加appsettings.json中关于日志的Logging节点配置
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            //日志控制台记录提供程序
            logging.AddConsole();
            //日志Debug记录提供程序
logging.ADDDebug();
            //日志EventSource记录提供程序
logging.AddEventSourceLogger();
        })
        .UseStartup<Startup>()
        .Build();
    webHost.Run();
}

默认项目模板调用CreateDefaultBuilder,该操作将添加日志记录(控制台、DEBUG、EventSource)提供给应用程序:

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>();

3.创建日志

创建日志可以从依赖注入(DI)中获取ILogger<TCateGoryName>对象。以下Razor页面示例会创建级别为InfORMation且类别为AboutModel类(Models/AboutModel)的日志:

public class AboutModel
{
    private readonly ILogger _logger;
    public AboutModel(ILogger<AboutModel> logger)
 {
    //ILogger是Core内置日志组件,默认已经注入,无需再次手动注入
        _logger = logger;
    }
    public void OnGet()
    {
        var Message = $"About page visited at {DateTime.UtcNow.ToLongTimeString()}";
        _logger.LogInformation("Message displayed: {Message}", Message);
    }
}
private readonly ILogger<AboutModel> _logger;
public HomeController(ILogger<AboutModel> logger)
{
    _logger = logger;
}
public IActionResult Index()
{
    AboutModel aboutModel = new AboutModel(_logger);
    aboutModel.OnGet();
    return View();
}

通过Kestral服务器启动调试:

看看控制台输出日志记录:

日志“级别”代表所记录事件的严重程度。日志“类别”是与每个日志关联的字符串。ILogger<T>实例会创建“类别”为类型T的完全限定名称的日志。

3.1启动时(Startup)创建日志

要将日志写入Startup类,构造函数签名需包含ILogger参数:

public class Startup
{
    private readonly ILogger _logger;
    public Startup(IConfiguration configuration, ILogger<Startup> logger)
    {
        Configuration = configuration;
        _logger = logger;
    }
    public IConfiguration Configuration { get; }
    public void ConfigureServices(IServiceCollection services)
    {
        _logger.LogInformation("Added TodoRepository to services");
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            _logger.LogInformation("In Development environment");
        }
    }
}

通过Kestral服务器启动调试看看控制台输出日志记录:

3.2在程序中(Program)创建日志

如果使用CreateDefaultBuilder,则可自行选择提供应用程序来替换默认应用程序。调用 ClearProviders,然后添加所需的应用程序。

public class Program
{
    public static void Main(string[] args)
    {
        var host = CreateWebHostBuilder(args).Build();
        var logger = host.Services.GetRequiredService<ILogger<Program>>();
        logger.LogInformation("Seeded the database.");
        host.Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureLogging(logging =>
    {
        logging.ClearProviders();
        logging.AddConsole();
    });
}

通过Kestral服务器启动调试看看控制台输出日志记录:

4.Configuration

日志记录提供程序配置由一个或多个配置提供程序提供:

  • 文件格式(INI、JSON 和 XML)。
  • 命令行参数。
  • 环境变量。
  • 内存中的.net对象。
  • 未加密的机密管理器存储。
  • 加密的用户存储,如 Azure Key Vault。
  • (已安装或已创建的)自定义提供程序。

例如,日志记录配置通常由应用设置文件的Logging部分提供。以下示例显示了典型 appsettings.Development.json 文件的内容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console":
    {
      "IncludeScopes": true
    }
  }
}

Logging属性可具有LogLevel和日志提供程序属性(显示控制台)。Logging下的LogLevel属性指定了用于记录所选类别的最低级别。在本例中,System和Microsoft类别在Information级别记录,其他均在Debug级别记录。如果提供程序支持日志作用域,则IncludeScopes将指示是否启用这些域。

5.日志级别

每个日志都指定了一个LogLevel值。日志级别指示严重性或重要程度。如果LogLevel是Warning级别,那么跟踪Trace,Debug,Information级别将不会记录。ASP.net core 定义了以下日志级别(按严重性从低到高排列): 

  • 跟踪Trace = 0
  • 调试Debug = 1
  • 信息 Information = 2
  • 警告 Warning = 3
  • 错误 Error = 4
  • 严重 Critical = 5

6.内置日志记录提供程序

  • 控制台:logging.AddConsole(); dotnet run 查看控制台日志记录输出。
  • 调试:logging.AddDebug(); 在 linux 中,此提供程序将日志写入 /var/log/message。
  • EventSource:logging.AddEventSourceLogger();在windows中,它使用PerfView实用工具收集和查看日志,但尚无支持Linux或MacOS的事件集合和显示工具。
  • EventLog:logging.AddEventLog();向Windows事件日志发送日志输出。
  • TraceSource:logging.AddTraceSource(sourceSwitchName);应用必须在.NET Framework(而非.Net Core)上运行。

7.第三方日志记录提供程序

适用于asp.net Core的第三方日志记录框架,链接地址官方文档中有:

  • elmah.io(GitHub 存储库)
  • Gelf(gitHub 存储库)
  • JSNLog(GitHub 存储库)
  • KissLog.net(GitHub 存储库)
  • Loggr(GitHub 存储库)
  • NLog(GitHub 存储库)
  • Sentry(GitHub 存储库)
  • Serilog(GitHub 存储库)
  • Stackdriver(Github 存储库)

例如使用NLog:NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET标准。NLog可以轻松写入多个目标。(数据库,文件,控制台)并即时更改日志记录配置。

到此这篇关于ASP.NET Core记录日志的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NET Core记录日志

本文链接: https://www.lsjlt.com/news/145225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NET Core记录日志
    目录1.前言2.添加日志提供程序3.创建日志3.1启动时(Startup)创建日志3.2在程序中(Program)创建日志4.Configuration5.日志级别6.内置日志记录提...
    99+
    2022-11-13
  • ASP.NET Core怎么添加记录日志
    这篇文章主要介绍了ASP.NET Core怎么添加记录日志的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ASP.NET Core怎么添加记录日志文章都会有所收获,下面我们一起来看看吧。1.前...
    99+
    2023-06-29
  • ASP.NET Core如何使用NLog记录日志
    这篇文章主要介绍了ASP.NET Core如何使用NLog记录日志,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言在所有的应用程序中,日志功能是不可或缺的模块...
    99+
    2023-06-29
  • ASP.NET Core如何使用Log4net实现日志记录功能
    这篇文章主要介绍“ASP.NET Core如何使用Log4net实现日志记录功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NET Core如何使用Log4net实现日...
    99+
    2023-06-29
  • .Net Core日志记录的核心机制
    目录一、前言二、说明三、开始3.1 日志记录器工厂3.1.1 ILoggerFactory 接口3.1.2 LoggerFactory 实现CreateLogger3.2日志记录提供...
    99+
    2022-11-13
  • .Net Core日志记录器实例分析
    这篇“.Net Core日志记录器实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“.Net Cor...
    99+
    2023-07-02
  • ASP.NET Core的日志系统介绍
    .net core是内置了日志系统的,本文这里简单的介绍一下它的基本用法。如下是一个简单的示例:  var service = new ServiceCollection(...
    99+
    2022-11-13
  • .Net Core日志记录之第三方框架Serilog
    一、前言 对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径。而在实际项目开发中,使用第三方日志框架(如: Log4Net、NLog、Log...
    99+
    2022-11-13
  • 如何在ASP.NET应用程序中记录日志?
    ASP.NET 是一种流行的 Web 应用程序框架,它提供了丰富的功能和工具,让开发者可以更加轻松地创建复杂的 Web 应用程序。在开发 ASP.NET 应用程序时,记录日志是非常重要的一项任务。记录日志可以帮助开发者在应用程序出现问题时快...
    99+
    2023-07-20
    并发 spring 日志
  • python 日志记录
    周海汉 /文 http://blog.csdn.net/ablo_zhou 2010.3.20   一、我写的log4py介绍   在写<汉字大全 >时,自己实现了简单的log系统: #!/bin/env python #...
    99+
    2023-01-31
    日志 python
  • ASP.NET Core的日志系统实例分析
    本文小编为大家详细介绍“ASP.NET Core的日志系统实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core的日志系统实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-02
  • .NetCore日志记录之日志配置
    目录一、前言二、说明三、开始3.1 默认配置3.2 自定义配置3.2.1 代码添加提供程序3.2.2 代码添加过滤器3.2.3 配置文件自定义四、问题五、总结一、前言 在项目的开发维...
    99+
    2022-11-13
  • ASP.NET Core使用自定义日志中间件
    这个日志框架使用的是ASP.NET Core的NLog,用来记录每次请求信息和返回信息。 1.首先创建一个Web应用项目,我选择的是MVC模板: 2.使用NuGet添加Micros...
    99+
    2022-11-13
  • 日志记录模块logging
    在python中,日志记录显示有两种方式,一种是保存在文件和打印屏幕上,一种保存在文件中。 第一种,直接保存在文件中。 1 import logging #日志模块,方便记录日志 2 3 # 下面是配置日志记录格式 4 lo...
    99+
    2023-01-30
    模块 日志 logging
  • PHP中的日志记录
    随着互联网技术的不断发展,越来越多的网站和应用程序开始采用PHP语言作为开发语言。作为一种轻量级的脚本语言,PHP拥有丰富的功能和灵活的语法,让程序员可以快速构建出高效的网站和应用程序。然而,在实际的开发过程中,程序出现错误或者异常是难以避...
    99+
    2023-05-23
    日志记录 PHP日志 编程日志
  • JavaScript怎么记录日志
    这篇文章主要介绍了JavaScript怎么记录日志的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript怎么记录日志文章都会有所收获,下面我们一起来看看吧。console.log()在浏览器中使用c...
    99+
    2023-07-06
  • ASP.Net Core中的日志与分布式链路追踪
    目录.NET Core 中的日志控制台输出非侵入式日志Microsoft.Extensions.LoggingILoggerFactoryILoggerProviderILogger...
    99+
    2022-11-13
  • ASP.NET Core扩展库之Http日志的使用详解
    目录一、开启服务端请求日志 二、开启客户端请求日志 三、示例     最佳实践都告诉我们不要记录请求的详细日志,因为这有安全问题,但在实际开发...
    99+
    2022-11-12
  • .NetCore日志记录之自定义日志组件
    一、前言 回顾:日志记录之日志核心要素揭秘 在上一篇中,我们通过学习了解在.net core 中内置的日志记录中的几大核心要素,在日志工厂记录器(ILoggerFactory)中实现...
    99+
    2022-11-13
  • ASP.NET 通过拦截器记录错误日志的示例代码
    目录前言拦截器代码实战前言     主要是记录一下实现的错误日志拦截,可以在拦截器里面控制返回的信息,把错误信息处理后返回给请求端。 拦截器...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作