-
ZLogger
Zero Allocation Text/Structured Logger for .NET with StringInterpolation and Source Generator, built on top of a Microsoft.Extensions.Logging.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Another bit of work was on setting up a logging system. Unity's logging options look a bit poor, and they're suitable for checking when things go wrong as they print the callstack too, but for logging en masse the log file can reach a gigabyte so that's not fun. So I looked a bit around, I tried to use ZLogger which looked like a performant library but just didn't work, I got annoyed and just wrote a bunch of classes to do logging. I have a base logger class that exposes the interface, and a derived class implements the logging interface. To avoid paying logging costs out of development, I can use the preprocessor to create dummy loggers (empty classes) instead of actual loggers, so that the IL2CPP can optimize them out. At least that's what I hope, this needs testing. And apparently, one thing I learned is that interpolated strings (e.g. $"Hello there, {name}") are a bad idea for logging (although they are super convenient) because the interpolated string gets built immediately, whereas if the log string is passed with its parameters, e.g. Log("Hello there, {0}", some.complex.code.get_name()) and the log string does not need to be written because the log level is not high enough, then the parameters don't get evaluated (citation needed).
Related posts
-
.NET Aspire is the best way to experiment with Dapr during local development
-
Get SQL-Server Stored Procedures with C#
-
Configure Renovate to handle nuspec files
-
Configure Renovate to update preview versions of NuGet packages
-
Referencing external Docker containers in .NET Aspire using the new custom resources API