Created
November 15, 2023 19:51
-
-
Save codemonkey85/39ef6be804af667da1bfbe6513a02bc5 to your computer and use it in GitHub Desktop.
Showcase of how to do .NET console apps with DI and logging.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Logging; | |
using Microsoft.Extensions.DependencyInjection; | |
using Microsoft.Extensions.Hosting; | |
using Microsoft.Extensions.Logging; | |
var builder = Host.CreateDefaultBuilder(args); | |
builder | |
.ConfigureLogging(logging => logging | |
.ClearProviders() | |
.AddConsole()); | |
builder | |
.ConfigureServices(services => services | |
.AddScoped<LogTest>() | |
.AddSingleton<IWorkerService, WorkerService>()); | |
var app = builder.Build(); | |
var worker = ActivatorUtilities.CreateInstance<Worker>(app.Services); | |
worker.WorkerTest($"Hello from {nameof(worker)}!"); | |
var logTest = ActivatorUtilities.CreateInstance<LogTest>(app.Services); | |
logTest.LogMessage($"Hello from {nameof(logTest)}!"); | |
internal class Worker(IWorkerService workerService) | |
{ | |
public void WorkerTest(string message) => workerService.WorkerServiceTest(message); | |
} | |
internal interface IWorkerService | |
{ | |
void WorkerServiceTest(string message); | |
} | |
internal class WorkerService(LogTest logTest) : IWorkerService | |
{ | |
public void WorkerServiceTest(string message) => logTest.LoggerTest(message); | |
} | |
namespace Logging | |
{ | |
public partial class LogTest(ILogger<LogTest> logger) | |
{ | |
// ReSharper disable once ReplaceWithPrimaryConstructorParameter | |
private readonly ILogger<LogTest> logger = logger; | |
public void LoggerTest(string message) => LogMessage(message); | |
[LoggerMessage(Level = LogLevel.Information, Message = "Test log: {message}")] | |
public partial void LogMessage(string message); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment