什么是LOGGING
.NET里面的日志分为六个级别

具体代码:
using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;namespace _210915_Demon01_Logging{class Program{static void Main(string[] args){var service = new ServiceCollection();service.AddLogging(e=> {e.AddConsole();//设置日志最低的输出级别,Critical>Error>Warning>Information>Debug>Tracee.SetMinimumLevel(LogLevel.Trace);});service.AddScoped<EmailLog>();using (var sp = service.BuildServiceProvider()){sp.GetRequiredService<EmailLog>().InitData();sp.GetRequiredService<EmailLog>().OperateDataError();}}}}using Microsoft.Extensions.Logging;using System;using System.IO;namespace _210915_Demon01_Logging{class EmailLog{//这里面绑定的是什么类,输出的日志就会绑定到什么类上。private readonly ILogger<EmailLog> logger;public EmailLog(ILogger<EmailLog> logger){this.logger = logger;}public void InitData(){logger.LogInformation("Start to execute the database.");}public void OperateDataError(){logger.LogError("Operate database failed.");logger.LogTrace("Tracking error.");logger.LogError("Operate database failed.");//可以将异常信息写入try{File.ReadAllText("x");}catch (Exception ex){logger.LogError(ex, "Exception");}}}}
通过EventLog记录到Windows平台下EventView下
只需要在service.AddLogging(e=>{e.AddEventlog();});即可
NLOG-文本日志
日志记录注意事项:
- 文本日志一般按照日期区分,xxx-Data
- 限制日志总个数或者总大小,防止将磁盘撑爆炸
- 限制单个日志文件的大小
NLog.Extension.Logging的使用
- 到Nuget.org下去官方网站查看说明
- 在项目中新建nlog.config(最好小写,约定大于配置,便于在linux下运行,linux大小写敏感)
- nlog.config中路径,将C盘删掉默认在程序根目录下保存,设置如果较新则复制。

参数解读


最多只会有四个文件:

结构化日志和集成日志服务
结构化日志
集中化日志
Serilog

Exceptionless

Exceptionless.com
writeto.exceptionless需要安装Nuget
```csharp
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;
using Serilog;
using Serilog.Formatting.Json;
using SystemService;
using Exceptionless;
namespace _210915_Demon01_Logging { class Program { static void Main(string[] args) { ExceptionlessClient.Default.Startup(“up5uzK6h92iGTN6ZAXNkiVecefPRWFLuwp45Chfd”); var service = new ServiceCollection(); service.AddLogging(e=> { //e.AddConsole();//Console Provider 保存日志到控制台下,这边执行的操作就是ConfigurationBuilder.Addxxx()。 //e.AddEventLog();//EventLog Provider 保存日志到Windows平台下的EventViewer下。 //e.AddNLog();//NLog Provider,保存日志到文件中,日志文件保存路径在配置文件中设置。 //设置日志最低的输出级别,Critical>Error>Warning>Information>Debug>Trace。 //e.SetMinimumLevel(LogLevel.Trace); //Serilog使用 Log.Logger = new LoggerConfiguration().MinimumLevel.Debug() .Enrich.FromLogContext() .WriteTo.Console(new JsonFormatter()) .WriteTo.Exceptionless() .CreateLogger(); e.AddSerilog(); }); service.AddAlbertLog();//扩展方法
using (var sp = service.BuildServiceProvider()){sp.GetRequiredService<IAlbertLog>().InitData();sp.GetRequiredService<IAlbertLog>().OperateDataError();}}}
总结
最好用Serilog(结构化日志)



