杨中科 ASP.NET 日志系统

什么是LOGGING

传统意义上的黑匣子,记录操作

什么是日志

杨中科 ASP.NET 日志系统_第1张图片

基本概念

1、日志级别:Trace 2、日志提供者(LoggingProvider):把日志输出到哪里。控制台、文件、数据库等。3、.NET的日志非常灵活,对于业务代码只要注入日志对象记录日志即可,具体哪些日志输出到哪里、什么样的格式、是否输出等都有配置或者初始化代码决定。

输出到控制台

1、NuGet: Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Console.
2、DI注入:services.AddLogging(logBuilder=>{
logBuilder.AddConsole();//可多个Provider
});
3、需要记录日志的代码,注入Iogger< T> 即可,T一般就用当前类,这个类的名字会输出到日志,方便定位错误。然后调用LogInformation()、LogError等方法输出不同级别的日志,还支持输出异常对象。

示例:

导入日志框架基础包,无论忘哪里输出
杨中科 ASP.NET 日志系统_第2张图片

控制台日志输出

杨中科 ASP.NET 日志系统_第3张图片
DI 注入
杨中科 ASP.NET 日志系统_第4张图片
杨中科 ASP.NET 日志系统_第5张图片
代码测试
杨中科 ASP.NET 日志系统_第6张图片
运行结果:
杨中科 ASP.NET 日志系统_第7张图片
发现只有warn fail 级别日志

更改日志最低级别限制
杨中科 ASP.NET 日志系统_第8张图片
运行结果:
杨中科 ASP.NET 日志系统_第9张图片
发现所有的都成功输出

设置为Error 则只会输出Error级别日志
杨中科 ASP.NET 日志系统_第10张图片
杨中科 ASP.NET 日志系统_第11张图片

测试二:

杨中科 ASP.NET 日志系统_第12张图片
运行结果:
杨中科 ASP.NET 日志系统_第13张图片

其他日志提供者

1、Console只适合开发阶段,why?运行阶段需要输出到文件等。
2、采用和Configuration类似的扩展机制,不仅内置了Debug、事件查看器、文件、zure日志等提供者,还可以扩展。Provider可以共存
3、EventLog:WindowsOnly。在Windows下部署的程序、网站运行出错、不正常,先去EventLog看看。NuGet安装:
Microsoft,Extensions.Logging.EventLog。然后logBuilder.AddEventLog()

日志系统2 NLOG

文本日志

1、运维人员更喜欢文本日志,为啥?
杨中科 ASP.NET 日志系统_第14张图片
控制台日志 很容易被刷掉,也不能被长久保存

1、为什么文本日志一般按照日期区分?
杨中科 ASP.NET 日志系统_第15张图片
如果程序运行很久的话,产生得日志文件将会十分庞大,也方便更好的定位问题

2、如何避免文本日志把磁盘撑爆?限制日志总个数或者总大小。
记满了一定数量,删除之前的

3、如何避免一个日志文件太大的问题?ICBC故事。限制单个文件大小。

NLOG

1、.NET没有内置文本日志提供者。第三方有Log4Net、NLog、Serilog等。老牌的Log4Net另搞一套,不考虑。
2、NLog,NuGet安装:NLog.Extensions.Logging
(usingNLog.Extensions.Logging;)。项目根目录下建nlog.config,注意文件名的大小写(考虑linux)也可以是其他文件名,但是需要单独配置。约定大于配置。内容见备注。讲解一下配置文件。
3、增加logBuilder.AddNLog()

示例

杨中科 ASP.NET 日志系统_第16张图片

创建nlog.config 文件,小写

杨中科 ASP.NET 日志系统_第17张图片
将官网中的配置信息,拷如config 配置文件
杨中科 ASP.NET 日志系统_第18张图片
自定义修改文件
杨中科 ASP.NET 日志系统_第19张图片
去掉得话 默认保存在项目文件下
杨中科 ASP.NET 日志系统_第20张图片
杨中科 ASP.NET 日志系统_第21张图片
更改配置文件属性,为如果较新则复制
杨中科 ASP.NET 日志系统_第22张图片

因为程序运行的时候,加载的是输出目录下的配置文件

DI 注入
杨中科 ASP.NET 日志系统_第23张图片

运行结果
杨中科 ASP.NET 日志系统_第24张图片
查看项目输出目录
杨中科 ASP.NET 日志系统_第25张图片

你可能感兴趣的:(ASP.NET,.netcore,asp.net,后端,c#)