.net core中的那些常用的日志框架(Logging篇)
前言
日志,在我们每个项目中是必不可少的,它不仅能在调试的时候测试数据,而且在项目上线,也是我们排查错误的得力助手,那我就能谈谈,用的多的几个日志框架吧!如果有不对的地方,欢迎来指教错误,谢谢!
Asp.Net Core日志中Logging篇
一看这个名字,大家也能猜到,这是微软自带的一个日志框架。
1.1引用
创建ASP.NET Core程序,程序会自带Microsoft.Extensions.Logging,如果没有,请在Nuget安装
1.2配置文件
在你项目中,找到appsetting.json文件,打开后,如下图:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
}
},
"AllowedHosts": "*"
}
你肯定会很疑惑,这些配置是什么意思,为啥要这样写?
appsetting.json是一个配置文件,我们很多配置信息,都可以写到这个文件中来,日志的配置也是如此。
Logging:是日志配置的默认名称,如果想自定义,也是可以,后面会演示
LogLevel:日志级别(日志的输出是有输出级,如下图所示)
Default:默认级别
Microsoft:系统级别
Microsoft.Hosting.Lifetime:生命时间基本
public enum LogLevel
{
//应用程序数据。 这些消息默认情况下处于禁用状态,并且永远不应在生产环境中启用。
Trace,
//在开发过程中用于交互式调查的日志。 这些日志应该主要包含对调试有用的信息,并且没有长期的信息
Debug,
//跟踪应用程序一般流程的日志。 这些日志应具有长期
Information,
//在应用程序流中突出显示异常或意外事件的日志,但不会导致应用程序执行停止。
Warning,
//突出显示由于故障而停止当前执行流的日志。这些应表明当前活动失败,而不是整个应用程序范围内的失败。
Error,
//描述不可恢复的应用程序或系统崩溃或灾难性事件的日志,必须立即引起注意的故障。
Critical,
//不用于编写日志消息。 指定不应将日志记录类别
None
}
优先等级从上到下递减Trace<Debug<Information<Warning<Error<Critical<None
1.4如何封装自己定义的日志结构?
我们可以新建一个类LoggerHelper,然后把ILogger接口的中定义的方法都实现一遍,可以自己加时间,加条件过滤等。把系统的日志框架,自己套一个壳,然后封装起来,然后就可以为所欲为了。
/// <summary>
/// 日志辅助类
/// </summary>
public class LoggerHelper
{
ILogger<LoggerHelper> _logger;
public LoggerHelper(ILogger<LoggerHelper> logger)
{
_logger = logger;
}
public void LogInformation(string msg)
{
_logger.LogInformation(Write(msg));
}
public void LogDebug(string msg)
{
_logger.LogDebug(Write(msg));
}
public void LogError(string msg)
{
_logger.LogError(Write(msg));
}
public void LogWarning(string msg)
{
_logger.LogWarning(Write(msg));
}
protected string Write(string msg)
{
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + msg;
}
}
第一步:注入服务
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddTransient<LoggerHelper>();
}
第二步:添加构造函数
private readonly LoggerHelper _logger;
public WeatherForecastController(LoggerHelper logger)
{
_logger = logger;
}
第三步:调用服务
_logger.LogInformation("LogInformation"+Guid.NewGuid().ToString("N"));
_logger.LogDebug("LogDebug" + Guid.NewGuid().ToString("N"));
_logger.LogWarning("LogWarning" + Guid.NewGuid().ToString("N"));
_logger.LogError("LogError" + Guid.NewGuid().ToString("N"));
第四步:配置日志级别
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"LoggerHelper": "Information"
},
"Console": {
"IncludeScopes": true
}
},
第五步:效果展示
看到这里是不是有疑问?
- "IncludeScopes": true是什么意思?
答:记录日志的 scope 信息, 对于 DeveloperExceptionPageMiddleware ,会在日志中记录 ConnectionId, RequestId, RequestPath。 - "LoggerHelper": "Information"是什么意思?
答:LoggerHelper就是我们自定义类,设置我们自己封装日志的日志级别 - 怎么理解日志中的信息?
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000
答:info:日志级别;Microsoft.Hosting.Lifetime[0]:日志作用域;Now listening on: http://localhost:5000:日志内容
总结:
可能我这篇博客,还是比较浅显的,没有深入的介绍日志中不同作用越的日志级别,只是以我的角度,给大家讲解一下Asp.Net Core中的系统自带的日志框架的使用,以及如何封装一个自己一个类,特殊处理日志信息。
.net core中的那些常用的日志框架(Logging篇)的更多相关文章
- .net core中的那些常用的日志框架(Serilog篇)
前言 上文说到Nlog日志框架,感觉它功能已经很强大,今天给大家介绍一个很不错的日志框架Serilog,根据我的了解,感觉它最大的优势是,结构化日志,它输出的日志是Json的格式,如果你使用的是Mon ...
- .net core中的那些常用的日志框架(NLog篇)
前言 咱们上回讲到,.net core中内置的Logging日志框架的使用,以及浅显的讲解,接下来,给大家介绍一个第三方日志框架(NLog). NLog简介 NLog是适用于各种.NET平台(包括.N ...
- Java常用的日志框架
1.Java常用日志框架对比 https://www.jianshu.com/p/bbbdcb30bba8 2.Log4j,Log4j2,Logback日志框架性能对比 https://bbs.hua ...
- 来,带你鸟瞰 Java 中4款常用的并发框架!
1. 为什么要写这篇文章 几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库. 但是,当深入实现细节时,我们想起了一位智者曾经说过 ...
- net core中动态给log4net添加日志类型
private static object m_Lock = new object(); /// <summary> /// 根据类型获取对应的日志操作类 /// </summary ...
- JAVA中几种常用的RPC框架介绍
原文:https://blog.csdn.net/zhaowen25/article/details/45443951
- 玩转ASP.NET Core中的日志组件
简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...
- ASP.NET Core 中的 ORM 之 Entity Framework
目录 EF Core 简介 使用 EF Core(Code First) EF Core 中的一些常用知识点 实体建模 实体关系 种子数据 并发管理 执行 SQL 语句和存储过程 延迟加载和预先加载 ...
- Java常用日志框架介绍
Java常用日志框架介绍 java日志概述 对于一个应用程序来说日志记录是必不可少的一部分.线上问题追踪,基于日志的业务逻辑统计分析等都离不日志.java领域存在多种日志框架,目前常用的日志框架包括L ...
随机推荐
- Kubernetes 中 Informer 的使用
原文链接:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247485580&idx=1&sn=7392dbadf ...
- 第一篇Scrum冲刺博客
目录 一.Alpha 阶段认领的任务 二.明日成员的任务安排 三.整个项目预期的任务量 四.敏捷开发前的感想 五.团队期望 一.Alpha 阶段认领的任务 陈起廷 任务 预计时间 日记天气.心情选择 ...
- SPSSAU数据分析思维培养系列3:分析思路篇
本文章为SPSSAU数据分析思维培养的第3期文章. 上文讲解如何选择正确的分析方法,除了有正确的分析方法外,还需要把分析方法进行灵活运用.拿到一份数据,应该如何进行分析,总共有几个步骤,第一步第二步应 ...
- vps的搭建
最近一直想自己搭建一款vps使用,但是苦于一直没有时间,直到今天得空,与大家一起分享下. 服务商的选择 因为自己之前在 vultr 上还留有余额(60$呢,好几百块大洋呢),所以我的服务商就选择 vu ...
- 小白一样能建站——winser2012 IIS8.0搭建基本的网站
在window server 2012环境下,搭建一个基本的 网站.能够使用即可. 打开服务器管理器 添加角色和功能 默认下一步 下一步, 下一步,选择web服务器 添加功能 下一步, 下一步,不安装 ...
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用. 这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常.本想着继续午睡,但 ...
- Java高级特性——反射机制(第一篇)
——何为动态语言,何为静态语言?(学习反射知识前,需要了解动态语言和静态语言) 动态语言 >是一类在运行时可以改变其结构的语言,例如新的函数.对象.甚至是代码可以被引进,已有的函数可以被删除或者 ...
- 力扣Leetcode 面试题51. 数组中的逆序对 - 归并排序
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5 限制: 0 <= ...
- C# 解析获取Url参数值
今天遇到一个需求,需要处理通过接口传过来的一个参数,参数内容为一个拼接好的Url地址,且该地址还会携带了一些额外的参数,包括但不限于数字,字符串,json串.样例如下: http://www.cple ...
- laravel封装方法在blade视图中使用
我这里使用的是Laravel7版本(本人只用过7 这里应该和5差别不大吧....) 首先需要在app/Providers/AppServiceProviders.php下的boot方法进行设置 示例: ...
