DEV Community

Mauro Petrini 👨‍💻
Mauro Petrini 👨‍💻

Posted on • Edited on

[PoC] I've built a logging provider using .NET Core

.NET Core 3.0 releases new compelling features.

Two of these new features are Channels and the new API System.Text.Json, which are heavily motivated by performance.

These features allow us to achieve better performance when we are building our applications.

To try out these features, I've created a logging provider component using .NET Core 3.0. The project is a PoC.

Architecture Diagram

The architecture diagram of the component looks like

Alt Text

The idea is simple; the app writes logs into a shared channel synchronously. Then, two hosted services are listening in the background and pulling messages from the channel to execute the bulk insert into a SQL Server database.

Limitations

It writes log records into a SQL Server Database using batch sizes or when the timer reaches the end. You can use this project to getting started to write log records wherever you want.

To dig into the code

GitHub logo mpetrinidev / yadl

Yet another dotnet logger

Yadl stands for Yet another dotnet logger 😅. This project is a PoC.

The implementation is built on top of the dotnet logger using Channels and System.Text.Json. These features are new in .NET Core 3.0

Architecture

Here's the architecture diagram of the component.

Architecture Diagram

Set up the database

Execute ./build.sh or ./build.ps1 depending on your operating system to create the SQL server and begin to use the sample. These files execute the docker container to download the SQL server image and run the necessary script to create the logs table's database.

Limitations

It writes log records into a SQL Server Database using batch sizes or when the timer reaches the end. You can use this project to getting started to write log records wherever you want.

👍 Feel free to file an issue to ask a question, propose a new feature or if anything is not working as expected

Closing Thoughts

Channels and System.Text.Json are new compelling features to come into the latest version of .NET Core.

On the other, creating a PoC helps me to try out new features in a programming language and make better decisions in the software that I am building.

We are looking forward to .NET 5 🤩

Top comments (0)