Skip to content

Commit 47262be

Browse files
committed
[增加]1. 增加GrafanaLoki 的配置
1 parent 4d87e26 commit 47262be

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

GameFrameX.StartUp/GameApp.cs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,68 @@ public static async Task Entry(string[] args, Action initAction, Action<LogOptio
6363
}
6464

6565
LogOptions.Default.LogType = serverType;
66+
LogOptions.Default.GrafanaLokiLabels = new Dictionary<string, string>();
67+
68+
// 将LauncherOptions的所有属性添加到标签中
69+
var properties = typeof(LauncherOptions).GetProperties();
70+
foreach (var property in properties)
71+
{
72+
var grafanaLokiLabelTagAttribute = property.GetCustomAttribute<GrafanaLokiLabelTagAttribute>();
73+
if (grafanaLokiLabelTagAttribute == null)
74+
{
75+
continue;
76+
}
77+
78+
var value = property.GetValue(launcherOptions)?.ToString();
79+
if (string.IsNullOrEmpty(value))
80+
{
81+
continue;
82+
}
83+
84+
if (!LogOptions.Default.GrafanaLokiLabels.TryAdd(property.Name, value))
85+
{
86+
LogHelper.WarnConsole($"Grafana Loki 标签 {property.Name} 已存在,将被忽略");
87+
}
88+
}
89+
90+
if (launcherOptions != null)
91+
{
92+
// 设置日志配置信息
93+
LogOptions.Default.IsConsole = launcherOptions.LogIsConsole;
94+
LogOptions.Default.IsGrafanaLoki = launcherOptions.LogIsGrafanaLoki;
95+
LogOptions.Default.GrafanaLokiUrl = launcherOptions.LogGrafanaLokiUrl;
96+
LogOptions.Default.GrafanaLokiUsername = launcherOptions.LogGrafanaLokiUsername;
97+
LogOptions.Default.GrafanaLokiPassword = launcherOptions.LogGrafanaLokiPassword;
98+
LogOptions.Default.RetainedFileCountLimit = launcherOptions.LogRetainedFileCountLimit;
99+
LogOptions.Default.IsFileSizeLimit = launcherOptions.LogIsFileSizeLimit;
100+
LogOptions.Default.FileSizeLimitBytes = launcherOptions.LogFileSizeLimitBytes;
101+
LogOptions.Default.LogEventLevel = launcherOptions.LogEventLevel;
102+
LogOptions.Default.RollingInterval = launcherOptions.LogRollingInterval;
103+
if (launcherOptions.LogGrafanaLokiLabels != null)
104+
{
105+
// 处理额外的自定义标签
106+
var lokiLabels = launcherOptions.LogGrafanaLokiLabels.ToList();
107+
var count = lokiLabels.Count;
108+
// 检查标签数量是否成对
109+
if (count % 2 != 0)
110+
{
111+
LogHelper.WarnConsole("Grafana Loki 标签数量不是成对的,将忽略最后一个标签");
112+
count--;
113+
}
114+
115+
for (int i = 0; i < count; i += 2)
116+
{
117+
var lokiLabelKey = lokiLabels[i];
118+
var lokiLabelValue = lokiLabels[i + 1];
119+
// 检查key是否已存在
120+
if (!LogOptions.Default.GrafanaLokiLabels.TryAdd(lokiLabelKey, lokiLabelValue))
121+
{
122+
LogHelper.WarnConsole($"Grafana Loki 标签 {lokiLabelKey} 已存在,将被忽略");
123+
}
124+
}
125+
}
126+
}
127+
66128
logConfiguration?.Invoke(LogOptions.Default);
67129
LogHandler.Create(LogOptions.Default);
68130

0 commit comments

Comments
 (0)