CSVMetricsLogger 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package CSVMetricsLogger --version 1.0.0                
NuGet\Install-Package CSVMetricsLogger -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CSVMetricsLogger" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CSVMetricsLogger --version 1.0.0                
#r "nuget: CSVMetricsLogger, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CSVMetricsLogger as a Cake Addin
#addin nuget:?package=CSVMetricsLogger&version=1.0.0

// Install CSVMetricsLogger as a Cake Tool
#tool nuget:?package=CSVMetricsLogger&version=1.0.0                

CSV Metrics Logger

This is a simple CSV metrics logger that logs metrics to a CSV file. It is designed to be used in a multithreaded environment. Here is an example of how to use it:

using CSV_Metrics_Logger;

[CSVRecord]
public readonly partial record struct TestData(string Name, sbyte Age);

List<TestData> testData =
[
    new TestData("Name 1", 14),
    new TestData("Name 2", 25),
    new TestData("Name 3", 36),
    new TestData("Name 4", 47),
    new TestData("Name 5", 58),
];

var filename = Path.GetTempFileName();
await using var storage = CSVStorage<TestData>.Create(fileName);

foreach (var data in testData)
    storage.Write(data);

You might use storage.Write from multiple threads. The logger will handle the synchronization for you.

CSV Metrics Logger uses a source generator. You have to use the following NuGet packages:

<PackageReference Include="CSVMetricsLoggerGenerator" Version="1.0.0" />
<PackageReference Include="CSVMetricsLogger" Version="1.0.0" />

Your data must be modeled as a structure; classes are not supported. It does not matter if you are using a (readonly) record struct or a regular struct. The only requirement is that the struct must be a partial struct. The source generator will generate the missing part of the struct for you. Each public property will be used as a column in the CSV file. The property type might be any type, as long as it supports the ToString(CultureInfo) method.

For each data structure, you create a CSVStorage instance. The CSVStorage instance is a disposable object. You must dispose of it when you are done with it. When the CSV file already exists, the CSVStorage object will append data to the existing file; the header will not be written again.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 193 5/21/2024
1.0.0 119 5/5/2024