内容简介:除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类接着,将 OrderService 注入到容器中日志级别设置为 Trace
18 | 日志框架:聊聊记日志的最佳姿势
除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类
namespace LoggingSimpleDemo { public class OrderService { ILogger<OrderService> _logger; public OrderService(ILogger<OrderService> logger) { _logger = logger; } public void Show() { _logger.LogInformation("Show Time{time}", DateTime.Now); } } }
接着,将 OrderService 注入到容器中
serviceCollection.AddTransient<OrderService>(); IServiceProvider service = serviceCollection.BuildServiceProvider(); var order = service.GetService<OrderService>(); order.Show();
日志级别设置为 Trace
"LoggingSimpleDemo.OrderService": "Trace"
启动程序,输出如下:
info: LoggingSimpleDemo.OrderService[0] Show Time03/06/2020 23:41:38
这样做的意义是什么呢?
通常情况下并不会用 ILoggerFactory 来构造日志记录器,而是用强类型的这种依赖注入的方式来去管理我们的日志,也就是说用构造函数将泛型的 ILogger 注入进来的方式
这样的方式有个好处就是我们不需要去为 logger 定义名字,它会默认将我们类型的名称作为记录器的名字,命名空间加上类名 LoggingSimpleDemo.OrderService ,那也就是可以在配置文件里面设置日志级别
"LoggingSimpleDemo.OrderService": "None"
这样子就没有输出
这里面有一个小技巧,需要大家特别注意,就是当我们在记录日志的时候,尽量使用模板的方式
_logger.LogInformation("Show Time{time}", DateTime.Now);
以下两种方式效果相同,但是字符串拼接的时机不同
_logger.LogInformation("Show Time{time}", DateTime.Now); _logger.LogInformation($"Show Time{DateTime.Now}");
第一行代码是在我们决定要输出的时候,也就是在 LogInformation 内部 console 要输出的时候才做拼接的动作
第二行代码是指我们在字符串拼接好以后,输入给了 LogInformation
如果我们把日志级别关掉
"LoggingSimpleDemo.OrderService": "None"
两行代码都不会有输出,但是第一行代码字符串拼接的动作不会执行,第二行代码已经执行了,第一行代码节省了运行资源
另外一个就是,在记录日志的时候,不要把敏感信息记录到日志中,记录日志的目的是为了调试或者定位问题
总结一下
1、日志级别定义
日志级别会从严重程度的低到高定义,可以决定输出的最低级别
2、日志对象获取
可以通过 ILoggerFactory 的方式获取日志对象,对它指定一个名字,也可以通过 ILogger 泛型的模式,从容器中获取日志对象,最推荐的就是强类型的泛型模式
3、日志过滤的配置逻辑
可以针对 logger 的名称来进行任意的配置,日志的开关以及日志的级别
4、日志记录的方法
LogInformation,LogDebug,还有一些小技巧,使用模板的方式记录日志,而不是提前拼接字符串输入给日志系统
5、避免记录敏感信息,如密码、密钥,规避安全风险
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot 实战 (七) | 默认日志配置
- Spring AOP 实现业务和异常日志记录实战
- ElasticSearch实战:Linux日志对接Kibana 原 荐
- 日志服务与SIEM(如Splunk)集成方案实战
- Spark+Hbase 亿级流量分析实战(日志存储设计)
- 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
企业应用架构模式
Martin Fowler / 人民邮电出版社 / 2009 / 79.00元
随着信息技术的广泛应用,系统需要处理的数据量越来越大,企业级软件开发已经渐成主流,而开发人员面临的困难与挑战也是显而易见的。更糟糕的是,这一领域的资料一直非常缺乏。 本书是软件开发大师Martin Fowler的代表作,采用模式的形式系统总结了业界多年积累的经验,被称为“企业级应用开发领域的圣经”,出版以来一直畅销不衰,至今仍然无可替代。作 者在精彩地阐述了企业应用开发和设计中的核心原则基础......一起来看看 《企业应用架构模式》 这本书的介绍吧!