.Net Core3.0 日志 logging
多年的经验,日志记录是软件开发的重要组成部分。没有日志记录机制的系统不是完善的系统。在开发阶段可以通过debug附件进程进行交互调试,可以检测到一些问题,但是在上线之后,日志的记录起到至关重要的作用。它可使我们在系统出现问题之后,排查错误提供依据。
.NET Core3.0内置多种日志记录程序,并且有第三方提供的日志记录程序框架如:log4net,NLog,Serilog,elmah.io等。后面会介绍前三种日志框架如何与.NETcore3.0结合起来进行使用。
内置日志记录提供程序
ASP.NET Core 提供以下提供程序:
控制台-可以在控制台查看日志输出
调试-vs工具 -》开始调试-》输出窗口进行查看日志输出
EventSource-可使用PerfView 实用工具收集和查看日志
EventLog-》仅在windows系统下可以使用事件查看器查看日志
TraceSource
AzureAppServicesFile
AzureAppServicesBlob
ApplicationInsights
创建使用日志
通用主机的应用程序和非主机应用程序使用的方式也是不同的。因为通用主机内部封装了 依赖注入、logging、配置、IHostedService的实现;并且默认配置了控制台,调试,EventSource以及EventLog(仅当在windows上运行时)提供程序。源码如下
通用主机
添加提供程序
可自行选择提供程序来替换默认提供程序。在CreateHostBuilder时候 调用ClearProviders(),然后添加所需的提供程序。我们创建一个api项目为例
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging(logging => { logging.ClearProviders();//去掉默认添加的日志提供程序 logging.AddConsole(); logging.AddDebug(); logging.AddEventSourceLogger(); logging.AddEventLog(); //logging.AddTraceSource(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); })
在 Web 应用或托管服务中,由依赖关系注入 (DI) 获取 ILogger。
private readonly ILogger<WeatherForecastController> _logger; public WeatherForecastController(ILogger<WeatherForecastController> logger) { _logger = logger; //可以显示指定类别名称ILoggerFactory logger //logger.CreateLogger("WebApi.Controllers.WeatherForecastController"); }
非主机控制台
添加提供程序
在创建 LoggerFactory 时调用提供程序的 Add{provider name} 扩展方法:
在非主机控制台应用中,使用 LoggerFactory 来创建 ILogger。
第三方日志框架
log4net,NLog和Serilog这3种日志记录框架几乎在.NET空间中占主导地位,不需要太多介绍。看看最近6周的下载排名就知道了。如图
log4net 在NET Core 3.0使用
引用Log4net到项目中,安装NuGet包
NLog 在NET Core 3.0使用
引用NLog到项目中,安装NuGet包
NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
CreateHostBuilder方法添加
.UseNLog() //NLog: Setup NLog for Dependency injection
使用
Serilog 在NET Core 3.0使用
引用Serilog到项目中,安装NuGet包
Main方法添加
小结:本文主要讲解NET Core3.0内置的日志提供程序和与第三方日志框架(Log4net,Nlog,Serilog)的使用。
.Net Core3.0 日志 logging相关推荐
- EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录
前言 本文主要是讲解EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录 注意拦截器只有EF Core3.0+ 支持,2.1请考虑上下文工厂的形式实现. 说点题外话.. 一晃又大半年没更新技 ...
- python 的日志logging模块学习
2019独角兽企业重金招聘Python工程师标准>>> python 的日志logging模块学习 分类: python 2011-08-02 23:51 8338人阅读 评论(0) ...
- 兼容 .NET Core3.0, Natasha 框架实现 隔离域与热编译操作
关于 Natasha 动态构建已经成为了封装者们的家常便饭,从现有的开发趋势来看,普通反射性能之低,会迫使开发者转向EMIT/表达式树等构建方式,但是无论是EMIT还是表达式树,都会依赖于反射的 ...
- 【A】兼容Core3.0后 Natasha 的隔离域与热编译操作。
文章转载授权级别:A 预计阅读时间:15分钟 一. 2.0预览版本增加了哪些功能 大部分为底层的升级优化,例如: 引擎兼容 Core3.0 优化编译流程,增加编译前语法检测及日志,统 ...
- [zz]很详细,涵盖了多数场景!推荐 - python 的日志logging模块学习
http://blog.csdn.net/yatere/article/details/6655445 1.简单的将日志打印到屏幕 import logging logging.debug('This ...
- Python 日志logging模块初探及多线程踩坑(2)
系列文章: Python 日志logging模块初探及多线程踩坑(1) Python 日志logging模块初探及多线程踩坑(2) 接着上面一篇文章,我们这篇来写一个多进程兼容且无损性能的 Timed ...
- Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life
Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life 学习目标 Python日志Logging 小游戏设计game of life 课后作业(2必做) ...
- python多个日志模块怎么隔离_在多个模块中使用Python日志logging
最好的做法是在每个模块中都有一个像这样定义的logging器: import logging logger = logging.getLogger(__name__) 靠近模块的顶部,然后在模块的其他 ...
- Android10.0 日志系统分析(四)-selinux、kernel日志在logd中的实现-[Android取经之路]
摘要:本节主要来讲解Android10.0 selinux.kernel日志在logd中的实现,包括LogAudit.LogKlog的源码分析 阅读本文大约需要花费15分钟. 文章首发微信公众号:In ...
最新文章
- jenkins获取远程服务器文件,Jenkins用SSH传输文件到远程服务器
- PHP配置问题:AppServ安装discuz出错 Fatal error:
- M4i—下一代高速数据采集、数字化仪平台
- CABasicAnimation fillMode和removedOnCompletion
- SAP Commerce Cloud(原Hybris) impex 里的美元(dollar $)符号
- .NET Core中使用结果过滤器ResultFilter统一结果返回封装
- 华米科技将推出首款真无线耳机 支持降噪还能检测心率?
- 以太坊2.0合约余额新增3872 ETH
- 交付自动化的探索与展望
- Top 10 tough core Java interview questions answers programming
- Maven dependency plugin使用
- 《上海悠悠接口自动化平台》-4.注册用例集实战演示
- 用Java解决牛客网题目JD1年终奖
- SecureCRT复制粘贴快捷设置
- HDMI转PGA电脑没有声音处理方法
- Bresenham 画圆算法原理
- 电源管理芯片LDO(Low Dropout Regulator)分析1
- 木马是如何穿过防火墙的
- JavaScript WebGL 使用图片疑惑点
- 德州学院计算机系吧,任传成(计算机系)老师 - 德州学院 - 院校大全
热门文章
- 将字符串中的大写字母变成小写字母
- C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并
- php 执行文件tar打包,利用tar for windows对大量文件进行快速打包
- [Hadoop in China 2011] 中兴:NoSQL应用现状及电信业务实践
- 城市智慧停车系统方案的产品设计体系介绍
- cordova-config.xml配置应用图标
- Optaplanner规划引擎的工作原理及简单示例(1)
- 导入工程后编译不过,报错: apply plugin: 'com.github.dcendents.android-maven'
- Linux中的selinux
- iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片