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
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

View File

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

View File

@ -16,9 +16,10 @@ namespace WelsonJS.Launcher.Telemetry
{
private readonly TelemetryOptions _options;
private readonly HttpClient _httpClient;
private readonly ICompatibleLogger _logger;
private bool _disposed;
public PosthogTelemetryProvider(TelemetryOptions options)
public PosthogTelemetryProvider(TelemetryOptions options, ICompatibleLogger logger = null)
{
_options = options ?? throw new ArgumentNullException(nameof(options));
@ -35,6 +36,7 @@ namespace WelsonJS.Launcher.Telemetry
_options.DistinctId = $"anon-{Guid.NewGuid():N}";
_httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(5) };
_logger = logger;
}
public async Task TrackEventAsync(
@ -70,11 +72,15 @@ namespace WelsonJS.Launcher.Telemetry
url,
new StringContent(json, Encoding.UTF8, "application/json"),
cancellationToken
)) { /* disposed automatically */ }
}
catch
))
{
// swallow for fire-and-forget telemetry
response.EnsureSuccessStatusCode();
}
}
catch (Exception ex)
{
// 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
{
private readonly ITelemetryProvider _provider;
private readonly ICompatibleLogger _logger;
public TelemetryClient(string providerName, TelemetryOptions options, ICompatibleLogger logger = null)
{
_provider = TelemetryProviderFactory.Create(providerName, options);
_logger = logger;
_provider = TelemetryProviderFactory.Create(providerName, options, logger);
}
public Task TrackEventAsync(

View File

@ -9,7 +9,7 @@ namespace WelsonJS.Launcher.Telemetry
{
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)
throw new ArgumentNullException(nameof(options));
@ -22,7 +22,7 @@ namespace WelsonJS.Launcher.Telemetry
switch (provider)
{
case "posthog":
return new PosthogTelemetryProvider(options);
return new PosthogTelemetryProvider(options, logger);
default:
throw new NotSupportedException(