传统意义上的黑匣子,记录操作
1、日志级别:Trace
1、NuGet: Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Console.
2、DI注入:services.AddLogging(logBuilder=>{
logBuilder.AddConsole();//可多个Provider
});
3、需要记录日志的代码,注入Iogger< T> 即可,T一般就用当前类,这个类的名字会输出到日志,方便定位错误。然后调用LogInformation()、LogError等方法输出不同级别的日志,还支持输出异常对象。
控制台日志输出
DI 注入
代码测试
运行结果:
发现只有warn fail 级别日志
测试二:
1、Console只适合开发阶段,why?运行阶段需要输出到文件等。
2、采用和Configuration类似的扩展机制,不仅内置了Debug、事件查看器、文件、zure日志等提供者,还可以扩展。Provider可以共存
3、EventLog:WindowsOnly。在Windows下部署的程序、网站运行出错、不正常,先去EventLog看看。NuGet安装:
Microsoft,Extensions.Logging.EventLog。然后logBuilder.AddEventLog()
1、运维人员更喜欢文本日志,为啥?
控制台日志 很容易被刷掉,也不能被长久保存
1、为什么文本日志一般按照日期区分?
如果程序运行很久的话,产生得日志文件将会十分庞大,也方便更好的定位问题
2、如何避免文本日志把磁盘撑爆?限制日志总个数或者总大小。
记满了一定数量,删除之前的
3、如何避免一个日志文件太大的问题?ICBC故事。限制单个文件大小。
1、.NET没有内置文本日志提供者。第三方有Log4Net、NLog、Serilog等。老牌的Log4Net另搞一套,不考虑。
2、NLog,NuGet安装:NLog.Extensions.Logging
(usingNLog.Extensions.Logging;)。项目根目录下建nlog.config,注意文件名的大小写(考虑linux)也可以是其他文件名,但是需要单独配置。约定大于配置。内容见备注。讲解一下配置文件。
3、增加logBuilder.AddNLog()
创建nlog.config 文件,小写
将官网中的配置信息,拷如config 配置文件
自定义修改文件
去掉得话 默认保存在项目文件下
更改配置文件属性,为如果较新则复制
因为程序运行的时候,加载的是输出目录下的配置文件