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>(); }); }