Fix the logger for telemetry

Fix the logger for telemetry
This commit is contained in:
Namhyeon Go 2025-12-03 16:54:19 +09:00
parent 3188317bf6
commit 1d4b7af5b3
5 changed files with 17 additions and 12 deletions

View File

@ -104,7 +104,8 @@ namespace WelsonJS.Launcher
// send event to the telemetry server // send event to the telemetry server
if (_telemetryClient != null) if (_telemetryClient != null)
{ {
_ = _telemetryClient.TrackAppStartedAsync("WelsonJS.Launcher", "0.2.7.57"); var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
_ = _telemetryClient.TrackAppStartedAsync("WelsonJS.Launcher", version);
} }
// draw the main form // draw the main form

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다. // 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.2.7.55")] [assembly: AssemblyVersion("0.2.7.58")]
[assembly: AssemblyFileVersion("0.2.7.55")] [assembly: AssemblyFileVersion("0.2.7.58")]

View File

@ -16,9 +16,10 @@ namespace WelsonJS.Launcher.Telemetry
{ {
private readonly TelemetryOptions _options; private readonly TelemetryOptions _options;
private readonly HttpClient _httpClient; private readonly HttpClient _httpClient;
private readonly ICompatibleLogger _logger;
private bool _disposed; private bool _disposed;
public PosthogTelemetryProvider(TelemetryOptions options) public PosthogTelemetryProvider(TelemetryOptions options, ICompatibleLogger logger = null)
{ {
_options = options ?? throw new ArgumentNullException(nameof(options)); _options = options ?? throw new ArgumentNullException(nameof(options));
@ -35,6 +36,7 @@ namespace WelsonJS.Launcher.Telemetry
_options.DistinctId = $"anon-{Guid.NewGuid():N}"; _options.DistinctId = $"anon-{Guid.NewGuid():N}";
_httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(5) }; _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(5) };
_logger = logger;
} }
public async Task TrackEventAsync( public async Task TrackEventAsync(
@ -70,11 +72,15 @@ namespace WelsonJS.Launcher.Telemetry
url, url,
new StringContent(json, Encoding.UTF8, "application/json"), new StringContent(json, Encoding.UTF8, "application/json"),
cancellationToken cancellationToken
)) { /* disposed automatically */ } ))
{
response.EnsureSuccessStatusCode();
}
} }
catch catch (Exception ex)
{ {
// swallow for fire-and-forget telemetry // Log and swallow for fire-and-forget telemetry
_logger?.Error($"Failed to send telemetry event '{eventName}': {ex.Message}");
} }
} }

View File

@ -13,12 +13,10 @@ namespace WelsonJS.Launcher.Telemetry
public sealed class TelemetryClient : IDisposable public sealed class TelemetryClient : IDisposable
{ {
private readonly ITelemetryProvider _provider; private readonly ITelemetryProvider _provider;
private readonly ICompatibleLogger _logger;
public TelemetryClient(string providerName, TelemetryOptions options, ICompatibleLogger logger = null) public TelemetryClient(string providerName, TelemetryOptions options, ICompatibleLogger logger = null)
{ {
_provider = TelemetryProviderFactory.Create(providerName, options); _provider = TelemetryProviderFactory.Create(providerName, options, logger);
_logger = logger;
} }
public Task TrackEventAsync( public Task TrackEventAsync(

View File

@ -9,7 +9,7 @@ namespace WelsonJS.Launcher.Telemetry
{ {
public static class TelemetryProviderFactory public static class TelemetryProviderFactory
{ {
public static ITelemetryProvider Create(string provider, TelemetryOptions options) public static ITelemetryProvider Create(string provider, TelemetryOptions options, ICompatibleLogger logger = null)
{ {
if (options == null) if (options == null)
throw new ArgumentNullException(nameof(options)); throw new ArgumentNullException(nameof(options));
@ -22,7 +22,7 @@ namespace WelsonJS.Launcher.Telemetry
switch (provider) switch (provider)
{ {
case "posthog": case "posthog":
return new PosthogTelemetryProvider(options); return new PosthogTelemetryProvider(options, logger);
default: default:
throw new NotSupportedException( throw new NotSupportedException(