如何使用第三方日志记录提供程序替代.NET Core中的内置程序

背景

.NET Core 支持适用于各种内置和第三方日志记录提供程序的日志记录 API。 先来看下如何将日志记录 API 与内置提供程序一起使用。

调用 CreateDefaultBuilder,这将添加以下日志记录提供程序:

  • 控制台

  • 调试

  • EventSource

  • EventLog:仅限 Windows

  • public class Program
    {public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});
    }
    

实现思路

若要替代Host.CreateDefaultBuilder 添加的默认日志记录提供程序集,请调用 ClearProviders 并添加所需的日志记录提供程序。 例如,以下代码:

  • 调用 ClearProviders 以从生成器中删除所有 ILoggerProvider 实例。

  • 添加控制台日志记录提供程序。

public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureLogging(logging =>{logging.ClearProviders();logging.AddConsole();}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});

Nlog案例

使用第三方替代,以Nlog为例

修改 program.cs

using System;
using NLog.Web;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;public static void Main(string[] args)
{var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();try{logger.Debug("init main");CreateHostBuilder(args).Build().Run();}catch (Exception exception){//NLog: catch setup errorslogger.Error(exception, "Stopped program because of exception");throw;}finally{// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)NLog.LogManager.Shutdown();}
}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).ConfigureLogging(logging =>{logging.ClearProviders();logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);}).UseNLog();  // NLog: Setup NLog for Dependency injection

写日志

using Microsoft.Extensions.Logging;public class HomeController : Controller
{private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;_logger.LogDebug(1, "NLog injected into HomeController");}public IActionResult Index(){_logger.LogInformation("Hello, this is the index!");return View();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql新加不了数据库_MySQL数据库之mysql增加新用户无法登陆解决方法

本文主要向大家介绍了MySQL数据库之mysql增加新用户无法登陆解决方法 &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。今天安装openstack folsom版本&#xff0c;安装完mysql&#xff0c;为各个服务增加对应的数据库和用户后&#xff0c…

编程去除背景绿幕抠图,基于.NET+OpenCVSharp

摘要&#xff1a;本文介绍了一种使用OpenCVSharp对摄像头中的绿幕视频进行实时“抠人像、替换背景”的方式&#xff0c;对于项目中的算法进行了分析。本文中给出了简化OpenCVSharp中Mat、MatExpr等托管资源释放的方法。本文还介绍了“高效摄像头播放控件”以及和OpenCVSharp的性…

.NET 云原生架构师训练营(模块二 基础巩固 依赖注入)--学习笔记

2.2.1 核心模块--依赖注入什么是依赖注入.NET Core DI 生命周期服务设计服务范围检查ASP.NET Core 依赖注入&#xff1a;https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?viewaspnetcore-5.0什么是依赖注入Dependency injection 依赖注入Inv…

vue ref 绑定的事件需要移除吗_Vue易遗忘的基础复习(二)

数据请求Vue-resource请求在Vue2.0之后已经被舍弃2. fetch请求因为传统 Ajax &#xff08;指 XMLHttpRequest&#xff09;存在一些令人头疼的问题&#xff1a;配置和调用方式非常混乱&#xff0c;而且基于事件的异步模型写起来也没有现代的 Promise&#xff0c;generator/yield…

如何在 ASP.NET Core 中使用 API 分析器

ASP.NET Core 2.2 引入了 API 分析器&#xff0c;它有利于提高 API 的文档化&#xff0c;API分析器 可以应用在任何带有 ApiController 特性的 Controller 上&#xff0c;本篇就和大家一起讨论下。安装 API 分析器 如果你使用的是 ASP.NET Core 2.2 的话&#xff0c;用 Visual …

.net mysql字符串截取_【MySQL】字符串截取之SUBSTRING_INDEX和【MySQL】字符串四则运算...

substring_index(str,delim,count)str:要处理的字符串delim:分隔符count:计数例子&#xff1a;strwww.google.com1.count是正数&#xff0c;那么就是从左往右数&#xff0c;第N个分隔符的左边的全部内容SELECT SUBSTRING_INDEX(www.google.com,.,1);结果是&#xff1a;wwwSELEC…

用C#+Selenium+ChromeDriver 爬取网页,完美模拟真实的用户浏览行为

背景Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。而对于爬虫来说&#xff0c;使用Selenium操控浏览器来爬取网上的数据那么肯定是爬虫中的杀手武器。这里&#xff0c;我将介绍selenium 谷歌浏览器的一般使…

mysql 设置宽松模式_mysql5.6 sql_mode设置为宽松模式

最近遇到一个很奇怪的事情由于数据人员的需求&#xff0c;现在需要修改mysql的sql_modesql_mode默认是sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES这时候我在/etc/my.cnf配置如下sql_modeNO_ENGINE_SUBSTITUTION重启后还是mysql> SELECT GLOBAL.sql_mode;---------…

ASP.NET Core ActionFilter引发的一个EF异常

最近在使用ASP.NET Core的时候出现了一个奇怪的问题。在一个Controller上使用了一个ActionFilter之后经常出现EF报错。InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guarante…

mysql os.pid_MySQL在OS El Capitan的配置[PID file error]

Installation使用Homebrew安装&#xff1a;brew install mysqlbash中显示如下信息&#xff0c;安装成功。Weve installed your MySQL database without a root password. To secure it run:mysql_secure_installationTo connect run:mysql -urootTo have launchd start mysql n…

BCVP开发者说第5期:QuartzCore.Blazor

沉静岁月&#xff0c;淡忘流年1项目简介QuartzCore.BlazorQuartzCore.Blazor 是一个基于 .Net5 开发的轻量级 Quartz 作业配置中心&#xff0c;实践应用 Ant Design Blazor 和 FreeSql 两个技术&#xff0c; 对这两个技术感兴趣的小伙伴可以加我一起学习讨论哦&#xff0c;对有…

mysql update返回_MySQL中,当update修改数据与原数据相同时会再次执行吗?

本文同步Java知音社区&#xff0c;专注于Java作者&#xff1a;powdbahttps://yq.aliyun.com/articles/694162一、背景本文主要测试MySQL执行update语句时&#xff0c;针对与原数据&#xff08;即未修改&#xff09;相同的update语句会在MySQL内部重新执行吗&#xff1f;二、测试…

.NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记

2.2.2 核心模块--日志ILogger 的使用日志的 ID日志的分类日志的级别LoggerProvider日志的最佳实践.NET Core 和 ASP.NET Core 中的日志记录&#xff1a;https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?viewaspnetcore-5.0ILogger 的使用在 Get 方法中添…

mysql数据库设计三大范式_了解数据库设计三大范式

数据库设计范式什么是范式&#xff1a;简言之就是&#xff0c;数据库设计对数据的存储性能&#xff0c;还有开发人员对数据的操作都有莫大的关系。所以建立科学的&#xff0c;规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范…

使用BeetleX网关部署第三方Web服务

BeetleX的http/ws网关在早期版本可以启动和管理第三方Web服务进程&#xff0c;在最新的1.5版本中引入了文件管理功能&#xff0c;通过这一功能可以对第三方Web服务进行发布管理。加入文件管理后BeetleX的新版本网关服务可以理解为一个简单化的IIS&#xff0c;但它的不同之处是可…

mysql 错误 0152_SP2-1503 SP2-0152 错误解决

一、现场描述服务器上有Oracle 10g环境变量分别为Oracle 10g环境变量export ORACLE_BASE/opt/oracleexport ORACLE_HOME$ORACLE_BASE/product/10.2.0/db_1export ORACLE_PATH$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/adminexport ORACLE_SIDecpexport NLS_LANGAME…

2020.NET开发者大会大会线上同步直播,以及参会秘籍

2020.NET开发者大会马上就要开幕啦&#xff01;你都做好参会准备没有&#xff1f;本届峰会线上分享将在思否和CSDN两个媒体平台同步进行&#xff0c;大家可以选择适合自己的方式在线参与互动哦&#xff01;访问下方链接&#xff0c;可以直接加入直播&#xff1a;思否直播观看地…

mysql数据聚合技术_Mysql 去重 聚合

示例数据表中的数据&#xff1a;mysql> select * from talk_test;-------------------| id | name | mobile |-------------------| 1 | xiao9 | 555555 || 2 | xiao6 | 666666 || 3 | xiao9 | 888888 || 4 | xiao9 | 555555 || 5 | xiao6 | 777777 |----------------…

C# 9.0中引入的新特性init和record的使用思考

.NET 5.0已经发布&#xff0c;C# 9.0也为我们带来了许多新特性&#xff0c;其中最让我印象深刻的就是init和record type&#xff0c;很多文章已经把这两个新特性讨论的差不多了&#xff0c;本文不再详细讨论&#xff0c;而是通过使用角度来思考这两个特性。initinit是C# 9.0中引…

使用 .NET Core 中的 EventCounters 衡量性能

背景对于每隔几毫秒发生的事件&#xff0c;最好使每个事件的开销较低&#xff08;小于一毫秒&#xff09;。 否则&#xff0c;对性能的影响将很大。 记录事件意味着你将向磁盘写入内容。 如果磁盘不够快&#xff0c;你将丢失事件。 你需要一个解决方案&#xff0c;而不是记录事…