From 5ec788c3052a36f5db8640e43a050ad14b3a6d78 Mon Sep 17 00:00:00 2001
From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com>
Date: Fri, 24 Oct 2025 19:13:54 +1000
Subject: [PATCH] Add ILogger and OTEL
---
Directory.Packages.props | 3 ++-
SharpIDE.Photino.sln | 1 +
nuget.config | 2 +-
src/SharpIDE.Godot/DiAutoload.cs | 12 +++++++++
src/SharpIDE.Godot/SharpIDE.Godot.csproj | 1 +
.../GodotServiceDefaults.cs | 25 +++++++++++++------
6 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 3e2ba3e..d315af6 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -26,6 +26,7 @@
+
@@ -58,4 +59,4 @@
-
+
\ No newline at end of file
diff --git a/SharpIDE.Photino.sln b/SharpIDE.Photino.sln
index 0a5977f..e08dfab 100644
--- a/SharpIDE.Photino.sln
+++ b/SharpIDE.Photino.sln
@@ -15,6 +15,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
Directory.Packages.props = Directory.Packages.props
NotesToUsers.md = NotesToUsers.md
.globalconfig = .globalconfig
+ nuget.config = nuget.config
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpIDE.Photino", "src\SharpIDE.Photino\SharpIDE.Photino.csproj", "{E35167E1-0FF4-4194-97A8-CC95EDA224CD}"
diff --git a/nuget.config b/nuget.config
index 19975b5..db21009 100644
--- a/nuget.config
+++ b/nuget.config
@@ -8,7 +8,7 @@
-
+
diff --git a/src/SharpIDE.Godot/DiAutoload.cs b/src/SharpIDE.Godot/DiAutoload.cs
index 1ae0b25..c7789d3 100644
--- a/src/SharpIDE.Godot/DiAutoload.cs
+++ b/src/SharpIDE.Godot/DiAutoload.cs
@@ -1,6 +1,8 @@
using Godot;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
using SharpIDE.Application.Features.Analysis;
using SharpIDE.Application.Features.Build;
using SharpIDE.Application.Features.FilePersistence;
@@ -33,6 +35,16 @@ public partial class DiAutoload : Node
services.AddScoped();
services.AddScoped();
services.AddScoped();
+ services.AddLogging(builder =>
+ {
+ builder.AddConsole();
+ builder.AddOpenTelemetry(logging =>
+ {
+ logging.IncludeFormattedMessage = true;
+ logging.IncludeScopes = true;
+ });
+ });
+ services.AddGodotOpenTelemetry();
_serviceProvider = services.BuildServiceProvider();
GetTree().NodeAdded += OnNodeAdded;
diff --git a/src/SharpIDE.Godot/SharpIDE.Godot.csproj b/src/SharpIDE.Godot/SharpIDE.Godot.csproj
index c86f6d9..2da594c 100644
--- a/src/SharpIDE.Godot/SharpIDE.Godot.csproj
+++ b/src/SharpIDE.Godot/SharpIDE.Godot.csproj
@@ -10,6 +10,7 @@
+
diff --git a/tools/AspNetCoreServiceDefaults/GodotServiceDefaults.cs b/tools/AspNetCoreServiceDefaults/GodotServiceDefaults.cs
index a61d577..b203b03 100644
--- a/tools/AspNetCoreServiceDefaults/GodotServiceDefaults.cs
+++ b/tools/AspNetCoreServiceDefaults/GodotServiceDefaults.cs
@@ -1,6 +1,6 @@
-using OpenTelemetry;
+using Microsoft.Extensions.DependencyInjection;
+using OpenTelemetry;
using OpenTelemetry.Metrics;
-using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
namespace Microsoft.Extensions.Hosting;
@@ -17,12 +17,9 @@ public static class GodotServiceDefaults
Console.WriteLine("OTEL_EXPORTER_OTLP_ENDPOINT is not set, skipping OpenTelemetry setup.");
return;
}
- var endpointUri = new Uri(endpoint!);
- var resource = ResourceBuilder.CreateDefault()
- .AddService("sharpide-godot");
+ var endpointUri = new Uri(endpoint);
_tracerProvider = Sdk.CreateTracerProviderBuilder()
- .SetResourceBuilder(resource)
.AddSource("SharpIde")
.AddOtlpExporter(options =>
{
@@ -32,7 +29,6 @@ public static class GodotServiceDefaults
.Build();
_meterProvider = Sdk.CreateMeterProviderBuilder()
- .SetResourceBuilder(resource)
.AddMeter("SharpIde")
.AddRuntimeInstrumentation()
.AddOtlpExporter(options =>
@@ -42,4 +38,19 @@ public static class GodotServiceDefaults
})
.Build();
}
+
+ public static void AddGodotOpenTelemetry(this IServiceCollection services)
+ {
+ services.AddOpenTelemetry();
+ services.AddOpenTelemetryExporters();
+ }
+
+ private static void AddOpenTelemetryExporters(this IServiceCollection services)
+ {
+ var useOtlpExporter = !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT"));
+ if (useOtlpExporter)
+ {
+ services.AddOpenTelemetry().UseOtlpExporter();
+ }
+ }
}