ServiceCollection services = new ServiceCollection();
services.AddLogging(loggingBuilder =>
{
//微软日志
//loggingBuilder.AddConsole();
///loggingBuilder.AddEventLog();
//loggingBuilder.SetMinimumLevel(LogLevel.Warning);
//Nlog日志
//loggingBuilder.AddNLog();
//serilog结构化日志
Log.Logger = new LoggerConfiguration().
MinimumLevel.
Debug().
Enrich.
FromLogContext().
WriteTo.Console(new JsonFormatter()).CreateLogger();
loggingBuilder.AddSerilog();
});
//依赖注入
services.AddScoped<Test1>();
services.AddScoped<Test2>();
using (var sp = services.BuildServiceProvider())
{
Test1 t1 = sp.GetRequiredService<Test1>();
Test2 t2= sp.GetRequiredService<Test2>();
for (int i = 0; i < 1; i++)
{
t1.Out();
t2.Out();
}
}
命名空间
Microsoft.Extensions.Logging---必须
Microsoft.Extensions.Logging.Console---控制台
Microsoft.Extensions.Logging.EventLog---window系统日志
NLog.Extensions.Logging---nlog
Serilog.AspNetCore---serilog
Test1测试源码
namespace ConsoleApp1
{
public class Test1
{
private readonly ILogger<Test1> _logger;
public Test1(ILogger<Test1> logger)
{
this._logger = logger;
}
public void Out()
{
_logger.LogDebug("数据库记录开始");
_logger.LogInformation("业务逻辑开始");
_logger.LogWarning("第一次数据库连接失败,开始重试");
_logger.LogWarning("第二次数据库连接失败,开始重试");
_logger.LogError("数据库连接 失败,错误");
try
{
File.ReadAllText("a:1.txt");
_logger.LogInformation("读入文件成功");
}
catch(Exception ex)
{
_logger.LogError(ex, "读入文件失败");
}
}
}
}
免费日志收集框架--中心化服务器
Exceptionless
ELK