前言

日志,在我们每个项目中是必不可少的,它不仅能在调试的时候测试数据,而且在项目上线,也是我们排查错误的得力助手,那我就能谈谈,用的多的几个日志框架吧!如果有不对的地方,欢迎来指教错误,谢谢!

Asp.Net Core日志中Logging篇

一看这个名字,大家也能猜到,这是微软自带的一个日志框架。

1.1引用

  1. 创建ASP.NET Core程序,程序会自带Microsoft.Extensions.Logging,如果没有,请在Nuget安装

1.2配置文件

在你项目中,找到appsetting.json文件,打开后,如下图:

  1. {
  2. "Logging": {
  3. "LogLevel": {
  4. "Default": "Debug",
  5. "Microsoft": "Warning",
  6. "Microsoft.Hosting.Lifetime": "Information",
  7. }
  8. },
  9. "AllowedHosts": "*"
  10. }

你肯定会很疑惑,这些配置是什么意思,为啥要这样写?

appsetting.json是一个配置文件,我们很多配置信息,都可以写到这个文件中来,日志的配置也是如此。

  1. Logging:是日志配置的默认名称,如果想自定义,也是可以,后面会演示
  2. LogLevel:日志级别(日志的输出是有输出级,如下图所示)
  3. Default:默认级别
  4. Microsoft:系统级别
  5. Microsoft.Hosting.Lifetime:生命时间基本
  1. public enum LogLevel
  2. {
  3. //应用程序数据。 这些消息默认情况下处于禁用状态,并且永远不应在生产环境中启用。
  4. Trace,
  5. //在开发过程中用于交互式调查的日志。 这些日志应该主要包含对调试有用的信息,并且没有长期的信息
  6. Debug,
  7. //跟踪应用程序一般流程的日志。 这些日志应具有长期
  8. Information,
  9. //在应用程序流中突出显示异常或意外事件的日志,但不会导致应用程序执行停止。
  10. Warning,
  11. //突出显示由于故障而停止当前执行流的日志。这些应表明当前活动失败,而不是整个应用程序范围内的失败。
  12. Error,
  13. //描述不可恢复的应用程序或系统崩溃或灾难性事件的日志,必须立即引起注意的故障。
  14. Critical,
  15. //不用于编写日志消息。 指定不应将日志记录类别
  16. None
  17. }

优先等级从上到下递减Trace<Debug<Information<Warning<Error<Critical<None

1.4如何封装自己定义的日志结构?

我们可以新建一个类LoggerHelper,然后把ILogger接口的中定义的方法都实现一遍,可以自己加时间,加条件过滤等。把系统的日志框架,自己套一个壳,然后封装起来,然后就可以为所欲为了。

  1. /// <summary>
  2. /// 日志辅助类
  3. /// </summary>
  4. public class LoggerHelper
  5. {
  6. ILogger<LoggerHelper> _logger;
  7. public LoggerHelper(ILogger<LoggerHelper> logger)
  8. {
  9. _logger = logger;
  10. }
  11. public void LogInformation(string msg)
  12. {
  13. _logger.LogInformation(Write(msg));
  14. }
  15. public void LogDebug(string msg)
  16. {
  17. _logger.LogDebug(Write(msg));
  18. }
  19. public void LogError(string msg)
  20. {
  21. _logger.LogError(Write(msg));
  22. }
  23. public void LogWarning(string msg)
  24. {
  25. _logger.LogWarning(Write(msg));
  26. }
  27. protected string Write(string msg)
  28. {
  29. return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + msg;
  30. }
  31. }

第一步:注入服务

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddControllers();
  4. services.AddTransient<LoggerHelper>();
  5. }

第二步:添加构造函数

  1. private readonly LoggerHelper _logger;
  2. public WeatherForecastController(LoggerHelper logger)
  3. {
  4. _logger = logger;
  5. }

第三步:调用服务

  1. _logger.LogInformation("LogInformation"+Guid.NewGuid().ToString("N"));
  2. _logger.LogDebug("LogDebug" + Guid.NewGuid().ToString("N"));
  3. _logger.LogWarning("LogWarning" + Guid.NewGuid().ToString("N"));
  4. _logger.LogError("LogError" + Guid.NewGuid().ToString("N"));

第四步:配置日志级别

  1. "Logging": {
  2. "LogLevel": {
  3. "Default": "Debug",
  4. "Microsoft": "Warning",
  5. "Microsoft.Hosting.Lifetime": "Information",
  6. "LoggerHelper": "Information"
  7. },
  8. "Console": {
  9. "IncludeScopes": true
  10. }
  11. },

第五步:效果展示



看到这里是不是有疑问?

  • "IncludeScopes": true是什么意思?

    答:记录日志的 scope 信息, 对于 DeveloperExceptionPageMiddleware ,会在日志中记录 ConnectionId, RequestId, RequestPath。
  • "LoggerHelper": "Information"是什么意思?

    答:LoggerHelper就是我们自定义类,设置我们自己封装日志的日志级别
  • 怎么理解日志中的信息?
  1. info: Microsoft.Hosting.Lifetime[0]
  2. Now listening on: http://localhost:5000

答:info:日志级别;Microsoft.Hosting.Lifetime[0]:日志作用域;Now listening on: http://localhost:5000日志内容

总结:

可能我这篇博客,还是比较浅显的,没有深入的介绍日志中不同作用越的日志级别,只是以我的角度,给大家讲解一下Asp.Net Core中的系统自带的日志框架的使用,以及如何封装一个自己一个类,特殊处理日志信息。

.net core中的那些常用的日志框架(Logging篇)的更多相关文章

  1. .net core中的那些常用的日志框架(Serilog篇)

    前言 上文说到Nlog日志框架,感觉它功能已经很强大,今天给大家介绍一个很不错的日志框架Serilog,根据我的了解,感觉它最大的优势是,结构化日志,它输出的日志是Json的格式,如果你使用的是Mon ...

  2. .net core中的那些常用的日志框架(NLog篇)

    前言 咱们上回讲到,.net core中内置的Logging日志框架的使用,以及浅显的讲解,接下来,给大家介绍一个第三方日志框架(NLog). NLog简介 NLog是适用于各种.NET平台(包括.N ...

  3. Java常用的日志框架

    1.Java常用日志框架对比 https://www.jianshu.com/p/bbbdcb30bba8 2.Log4j,Log4j2,Logback日志框架性能对比 https://bbs.hua ...

  4. 来,带你鸟瞰 Java 中4款常用的并发框架!

    1. 为什么要写这篇文章 几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库. 但是,当深入实现细节时,我们想起了一位智者曾经说过 ...

  5. net core中动态给log4net添加日志类型

    private static object m_Lock = new object(); /// <summary> /// 根据类型获取对应的日志操作类 /// </summary ...

  6. JAVA中几种常用的RPC框架介绍

    原文:https://blog.csdn.net/zhaowen25/article/details/45443951

  7. 玩转ASP.NET Core中的日志组件

    简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...

  8. ASP.NET Core 中的 ORM 之 Entity Framework

    目录 EF Core 简介 使用 EF Core(Code First) EF Core 中的一些常用知识点 实体建模 实体关系 种子数据 并发管理 执行 SQL 语句和存储过程 延迟加载和预先加载 ...

  9. Java常用日志框架介绍

    Java常用日志框架介绍 java日志概述 对于一个应用程序来说日志记录是必不可少的一部分.线上问题追踪,基于日志的业务逻辑统计分析等都离不日志.java领域存在多种日志框架,目前常用的日志框架包括L ...

随机推荐

  1. 逆流而上,7月阿里最新出炉的三面面经,年薪50W,我行您也行

    从7月份开始,打算找工作,一个偶然的机会,拉勾上一个蚂蚁金服的师兄找到我,说要内推,在此感谢姚师兄,然后就开始了蚂蚁金服的面试之旅.把简历发过去之后,就收到了邮件通知,10个工作日联系我,请耐心等待. ...

  2. Jenkins读取Allure结果出报告

    1.想 jenkins 有展示和解析 Allure 报告的能力,就必须装 Allure 插件. 「安装插件地址:」 http://updates.jenkins-ci.org/download/plu ...

  3. PowerJob 在线日志饱受好评的秘诀:小但实用的分布式日志系统

    本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列. 项目地址: https://github.com/ ...

  4. hyperledger-fabric环境快速搭建踩坑集锦(实用)

    安装docker 及 docker-compose 安装docker没什么好说的,一部分教程都给出了指令,在这里就不谈了. docker-compose不同的教程给出了不同的方法,在这里介绍一种极为快 ...

  5. 前端测试框架 Jest

    前端测试工具一览 前端测试工具也和前端的框架一样纷繁复杂,其中常见的测试工具,大致可分为测试框架.断言库.测试覆盖率工具等几类.在正式开始本文之前,我们先来大致了解下它们: 测试框架 测试框架的作用是 ...

  6. Redis秒杀实战-微信抢红包-秒杀库存,附案例源码(Jmeter压测)

    导读 前二天我写了一篇,Redis高级项目实战(点我直达),SpringBoot整合Redis附源码(点我直达),今天我们来做一下Redis秒杀系统的设计.当然啦,Redis基础知识还不过关的,先去加 ...

  7. Flink run提交参数

    折腾了好几天,终于搞定了Flink run提交参数,记录一下. 背景: 之前一直报错,akka,AskTimeoutException,尝试添加akka.ask.timeout=120000s, 依然 ...

  8. Unity3d UGUI插件之TSTableView

    TSTableView是Tacticsoft工作室开发的一款适用于UGUI的列表(Table)插件,设计灵感来源于iOS/Mac的UITableView,提供高复用.高性能的列表,其主要特点是: 采用 ...

  9. Forward Rendering VS Deferred Rendering

    http://gad.qq.com/article/detail/32731 Forward Rendering Deferred Rendering

  10. 08_Python的数据类型

    1.数字(整型int 浮点型float 复数complex) 1.数字概述 不可变类型,一旦创建不可修改,不是迭代对象,属于原子型 2.整型数int 概述: 整型数是不带有小数部分的数字,包括自然数, ...