Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 37 additions & 25 deletions GameFrameX.AppHost/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,31 +138,7 @@ private static async Task Main(string[] args)
/// <param name="startupOptions">启动选项实例 / Startup options instance</param>
private static void ConfigureLogOptions(StartupOptions startupOptions)
{
var properties = typeof(StartupOptions).GetProperties();
foreach (var property in properties)
{
var grafanaLokiLabelTagAttribute = property.GetCustomAttribute<GrafanaLokiLabelTagAttribute>();
if (grafanaLokiLabelTagAttribute == null)
{
continue;
}

if (property.Name.Equals(nameof(StartupOptions.ServerType), StringComparison.Ordinal))
{
continue;
}

var value = property.GetValue(startupOptions)?.ToString();
if (string.IsNullOrEmpty(value))
{
continue;
}

if (!LogOptions.Default.GrafanaLokiLabels.TryAdd(property.Name, value))
{
LogHelper.Warning(LocalizationService.GetString(Keys.StartUp.GrafanaLokiLabelExists, property.Name));
}
}
ApplyGrafanaLokiLabels(startupOptions);

LogOptions.Default.IsConsole = startupOptions.LogIsConsole;
LogOptions.Default.IsGrafanaLoki = startupOptions.LogIsGrafanaLoki;
Expand Down Expand Up @@ -206,6 +182,42 @@ private static void ConfigureLogOptions(StartupOptions startupOptions)
LogOptions.Default.LogTagName = logTypeParts.Count > 0 ? string.Join("_", logTypeParts) : null;
}

/// <summary>
/// 根据启动选项上的 GrafanaLokiLabelTagAttribute 标记,收集并写入日志的 Grafana Loki 标签。
/// </summary>
/// <remarks>
/// Collects Grafana Loki labels from GrafanaLokiLabelTagAttribute markers on startup options and writes them to log options. Extracted from ConfigureLogOptions to keep cognitive complexity under the Sonar S3776 threshold.
/// </remarks>
/// <param name="startupOptions">启动选项实例 / Startup options instance</param>
private static void ApplyGrafanaLokiLabels(StartupOptions startupOptions)
{
var properties = typeof(StartupOptions).GetProperties();
foreach (var property in properties)
{
var grafanaLokiLabelTagAttribute = property.GetCustomAttribute<GrafanaLokiLabelTagAttribute>();
if (grafanaLokiLabelTagAttribute == null)
{
continue;
}

if (property.Name.Equals(nameof(StartupOptions.ServerType), StringComparison.Ordinal))
{
continue;
}

var value = property.GetValue(startupOptions)?.ToString();
if (string.IsNullOrEmpty(value))
{
continue;
}

if (!LogOptions.Default.GrafanaLokiLabels.TryAdd(property.Name, value))
{
LogHelper.Warning(LocalizationService.GetString(Keys.StartUp.GrafanaLokiLabelExists, property.Name));
}
}
}

/// <summary>
/// 根据服务器类型参数解析多个服务器类型。
/// </summary>
Expand Down
Loading