https://github.com/itn3000/opentelemetry.collector.eventsource
unofficial opentelemetry collector for System.Diagnostics.Tracing.EventSource
https://github.com/itn3000/opentelemetry.collector.eventsource
csharp eventsource opentelemetry
Last synced: 2 months ago
JSON representation
unofficial opentelemetry collector for System.Diagnostics.Tracing.EventSource
- Host: GitHub
- URL: https://github.com/itn3000/opentelemetry.collector.eventsource
- Owner: itn3000
- License: mit
- Created: 2020-02-27T09:03:24.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T20:56:57.000Z (almost 2 years ago)
- Last Synced: 2026-01-11T11:33:25.398Z (6 months ago)
- Topics: csharp, eventsource, opentelemetry
- Language: C#
- Size: 31.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Overview
[](https://www.nuget.org/packages/Unofficial.OpenTelemetry.Collector.EventSource)
This is the C# library for collecting [EventSource](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventsource) with [opentelemetry](https://opentelemetry.io)
# Usage
## Installing from NuGet
add `Unofficial.OpenTelemetry.Collector.EventSource` to your nuget package reference.
available version is listed in [nuget project page](https://www.nuget.org/packages/Unofficial.OpenTelemetry.Collector.EventSource)
## Initialize
### Add Custom Events
if you want to add your EventSource, you should use `UseEventSource(this TracerBuilder builder, EventSource ev, EventLevel level)` or
`UseEventSource(this TracerBuilder builder, IEnumerable> events)`
sample code is here
```csharp
// using System.Diagnostics.Tracing;
// using OpenTelemetry.Trace;
// using OpenTelemetry.Trace.Configuration;
// "YourEventSource.Log" is static readonly instance of your custom EventSource.
using(var factory = TracerFactory.Create(builder =>
{
builder.UseEventSource(YourEventSource.Log, EventLevel.Always);
// add your exporter...
}))
{
// ...
}
```
### Add Framework Events
if you want to add Framework's EventSource(like "System.Runtime", or another EventSource you cannot get instance directly),
set `EventSourceCollectorOption.IsEnableFunc` and pass in `UseEventSource`.
sample code is here
```csharp
// using System.Diagnostics.Tracing;
// using OpenTelemetry.Trace;
// using OpenTelemetry.Trace.Configuration;
// "YourEventSource.Log" is static readonly instance of your custom EventSource.
using(var factory = TracerFactory.Create(builder =>
{
builder.UseEventSource(EventSourceCollectorOption.Create().SetIsEnableFunc(src =>
{
// if System.Threading.Tasks.TplEventSource enabled, stackoverflow error may be occured when creating span
if(!src.Name != "System.Threading.Tasks.TplEventSource")
{
Console.WriteLine($"{src.Name} enabled");
return (true, new EventEnableOption());
}
else
{
Console.WriteLine($"{src.Name} ignored");
return (false, default);
}
}));
// add your exporter...
}))
{
// ...
}
```
## Using with IServiceCollection
1. define your eventsource, ex:
2. do `OpenTelemetry.Trace.Configuration.TracerBuilderExtensions.UseEventSource` with your TracerBuilder instance(this is extension method)
* [basic sample is here](sample/BasicSample)
* [events from framework sample is here](sample/SystemEventSample)
# ChangeLog
## 0.2.0
Add `UseEventSource(EventSourceCollectorOption)` for collecting framework events.
## 0.1.0
First release