nop*_*nop 3 .net c# dependency-injection serilog .net-5
我正在开始使用Serilog,但我不知道如何将 ILogger 依赖项注入到我的类中。如果我使用 ASP.NET Core 5,这很容易,但我使用的是 .NET Core 控制台应用程序。我怎样才能做类似的事情?
public class TestStrategy
{
private static readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.Name);
...
}
Run Code Online (Sandbox Code Playgroud)
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
我必须 DIlogger进入所有课程吗?
这是使用 .net 5 的示例Microsoft.Extensions.DependencyInjection;:
namespace dotnet.console.app
{
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
class Program
{
static Task Main(string[] args) =>
CreateHostBuilder(args).Build().RunAsync();
static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((_, services) =>
services.AddHostedService<Worker>()
.AddLogging(builder =>
{
var logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
builder.AddSerilog(logger);
}));
}
}
Run Code Online (Sandbox Code Playgroud)
namespace dotnet.console.app
{
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Worker : BackgroundService
{
private ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
this._logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
this._logger.LogInformation("Hello, Serilog!");
await Task.Delay(1000, stoppingToken);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" />
<PackageReference Include="Serilog" Version="2.10.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10139 次 |
| 最近记录: |