-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathProgram.cs
More file actions
80 lines (72 loc) · 2.71 KB
/
Program.cs
File metadata and controls
80 lines (72 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.Diagnostics;
using System.Collections.Generic;
using OpenTelemetry;
using OpenTelemetry.Trace;
using OpenTelemetry.Resources;
using Uptrace.OpenTelemetry;
namespace Example.Basic
{
class Program
{
static void Main(string[] args)
{
var serviceName = "myservice";
var serviceVersion = "1.0.0";
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddSource("*") // subscribe to all activity sources
.SetResourceBuilder(
ResourceBuilder
.CreateDefault()
.AddEnvironmentVariableDetector()
.AddTelemetrySdk()
.AddService(serviceName: serviceName, serviceVersion: serviceVersion)
)
// use UPTRACE_DSN env var
.AddUptrace() // use UPTRACE_DSN env var
// or pass DSN explicitly
//.AddUptrace("https://<token>@uptrace.dev/<project_id>")
.Build();
using var source = new ActivitySource("app_or_lib_name");
using (var main = source.StartActivity("main-operation"))
{
using (var child1 = source.StartActivity("child1-of-main"))
{
child1?.AddEvent(
new ActivityEvent(
"log",
DateTime.UtcNow,
new ActivityTagsCollection(
new Dictionary<string, object>
{
{ "log.severity", "error" },
{ "log.message", "User not found" },
{ "enduser.id", 123 },
}
)
)
);
}
using (var child2 = source.StartActivity("child2-of-main"))
{
try
{
throw new ArgumentException("just an exception");
}
catch (Exception ex)
{
child2?.SetStatus(ActivityStatusCode.Error, "status description");
child2?.AddException(ex);
}
}
main?.SetTag("http.method", "GET");
Console.WriteLine(
string.Format(
"https://app.uptrace.dev/traces/{0}",
Activity.Current.Context.TraceId
)
);
}
}
}
}