1、安装引用
使用 Serilog 日志框架,需要安装引用 Serilog,安装的方法有多种,分别如下,
1)使用Nuget界面管理器
搜索 "Serilog" 在列表中分别找到它,点击"安装"
相关文档:VS(Visual Studio)中Nuget的使用
2)使用Package Manager命令安装
PM> Install-Package Serilog
3)使用.NET CLI命令安装
> dotnet add package Serilog
控制台应用需要安装引用 Serilog.Sinks.Console
,ASP.NET Core项目需要安装引用 Serilog.AspNetCore
,安装可以参考上面的方法。
2、Console 控制台项目配置使用Serilog
一种Serilog接收器,通过标准输出将日志事件写入Windows控制台或ANSI终端。支持着色和自定义主题,包括macOS、Linux和Windows 10上的ANSI 256颜色主题。默认的输出是纯文本。
using Serilog;
using Serilog.Sinks.SystemConsole.Themes;
using System;
using System.Threading;
namespace ConsoleDemo
{
public static class Program
{
public static void Main()
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Console(theme: AnsiConsoleTheme.Code)
.CreateLogger();
try
{
Log.Debug("Getting started");
Log.Information("Hello {Name} from thread {ThreadId}", Environment.GetEnvironmentVariable("USERNAME"), Thread.CurrentThread.ManagedThreadId);
Log.Warning("No coins remain at position {@Position}", new { Lat = 25, Long = 134 });
Fail();
}
catch (Exception e)
{
Log.Error(e, "Something went wrong");
}
Log.CloseAndFlush();
}
static void Fail()
{
throw new DivideByZeroException();
}
}
}
3、ASP.NET Core 控制台项目配置使用Serilog
Serilog日志记录适用于ASP.NET Core。此包通过Serilog路由ASP.NET Core的日志消息,可以将有关ASP.NET内部操作的信息写入与应用程序事件相同的Serilog接收器中。安装并配置了Serilog.AspNetCore后,可以直接通过Serilog或ASP.NET注入的任何ILogger接口编写日志消息。所有日志记录器将使用相同的底层实现、级别和目的地。
using Serilog;
namespace Sample;
public static class Program
{
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateBootstrapLogger();
Log.Information("Starting up!");
try
{
CreateHostBuilder(args).Build().Run();
Log.Information("Stopped cleanly");
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "An unhandled exception occured during bootstrapping");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext()
.WriteTo.Console())
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}