Added the README.md files
This commit is contained in:
parent
951858a99e
commit
fc4b841fb6
@ -1 +1,38 @@
|
||||
TODO
|
||||
# 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:
|
||||
|
||||
```csharp
|
||||
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:
|
||||
|
||||
```xml
|
||||
<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.
|
@ -1 +1,38 @@
|
||||
TODO
|
||||
# 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:
|
||||
|
||||
```csharp
|
||||
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:
|
||||
|
||||
```xml
|
||||
<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.
|
39
README.md
39
README.md
@ -1 +1,38 @@
|
||||
TODO
|
||||
# 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:
|
||||
|
||||
```csharp
|
||||
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:
|
||||
|
||||
```xml
|
||||
<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.
|
Loading…
Reference in New Issue
Block a user