简介
Serilog是.Net Core平台上非常著名的结构化日志类库。
Serilog 通过NuGet分发,项目包括一个Seirlog核心项目Seirlog和很多接收器sinks(超过100个),这些接收是通过插件的方式来实现将日志写入到各种终端,文件,邮件,数据库或日志服务器。
博文涉及内容
我会通过代码演示如何生成日志记录,完成依赖注入,输出到控制台,输出到目录。
前提条件
.Net Core 的环境我相信大家都有
这里重点说一下涉及到的Nuget包
Serilog.AspNetCore #核心库
Serilog.Sinks.File #输出日志文件
Serilog.Sinks.Console #输出到控制台
Install-Package Serilog.AspNetCore
Install-Package Serilog.Sinks.File
Install-Package Serilog.Sinks.Console
初始化
Serilog的初始化代码在Program.cs脚本里
using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
namespace Log.Services
{
public class Program
{
public static void Main(string[] args)
{
//生成Log对象
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information() //输出的最小日志等级
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.WriteTo.Console() //输出到控制台
.WriteTo.File(AppContext.BaseDirectory + "/logs/log.log", rollingInterval: RollingInterval.Day) //输出日志文件,并按日期分割
.CreateLogger(); //创建Logger对象
try
{
Log.Information("Starting up");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Application start-up failed");
}
finally
{
Log.CloseAndFlush(); //重置全局设置
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(loggingBuilder =>
{ loggingBuilder.ClearProviders(); //去掉默认日志提供程序
loggingBuilder.AddSerilog(); //引用Serilog
})
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
}
注入实例
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace Log.Services.Demo
{
public class ClassName
{
private readonly ILogger<ClassName> _logger;
//构造函数声明注入
public ClassName(ILogger<ClassName> logger)
{
_logger = logger;
}
//使用
public void TestLog()
{
try
{
_logger.LogInformation("TestLog",null);
}
catch (Exception ex)
{
_logger.LogError(ex, "");
}
}
}
}
这个博文其实主要是写给我自己看的,不然每次搭建项目时都有遗漏。
基本上就是这样了,有问题或者是有建议的欢迎留言评论或者私信我。