|
5 | 5 | // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! |
6 | 6 |
|
7 | 7 | using System.IO.Compression; |
| 8 | +using GameFrameX.Foundation.Extensions; |
8 | 9 | using Serilog; |
9 | 10 | using Serilog.Events; |
10 | 11 | using Serilog.Sinks.Grafana.Loki; |
@@ -79,18 +80,24 @@ public static ILogger Create(LogOptions logOptions, bool isDefault = true, Actio |
79 | 80 | Directory.CreateDirectory(logFolderPath); |
80 | 81 | } |
81 | 82 |
|
82 | | - Console.WriteLine("the following is the log configuration information"); |
83 | | - Console.WriteLine("╔═════════════════════════════════════════════════════════╗"); |
84 | | - Console.WriteLine(logOptions); |
85 | | - Console.WriteLine("╚═════════════════════════════════════════════════════════╝"); |
| 83 | + |
| 84 | + // Console.WriteLine("the following is the log configuration information"); |
| 85 | + if (isDefault) |
| 86 | + { |
| 87 | + LogHelper.ShowOption("log configuration information", logOptions); |
| 88 | + } |
| 89 | + |
| 90 | + // Console.WriteLine("╔═════════════════════════════════════════════════════════╗"); |
| 91 | + // Console.WriteLine(logOptions); |
| 92 | + // Console.WriteLine("╚═════════════════════════════════════════════════════════╝"); |
86 | 93 | Console.WriteLine(); |
87 | 94 | var logger = CreateLoggerConfiguration().Enrich.WithProperty("AppType", logOptions.LogType ?? AppDomain.CurrentDomain.FriendlyName); |
88 | 95 | if (!string.IsNullOrEmpty(logOptions.LogTagName)) |
89 | 96 | { |
90 | 97 | logger.Enrich.WithProperty("TagName", logOptions.LogTagName ?? ""); |
91 | 98 | } |
92 | 99 |
|
93 | | - logger.WriteTo.File(logPath, rollingInterval: logOptions.RollingInterval, rollOnFileSizeLimit: logOptions.IsFileSizeLimit, fileSizeLimitBytes: logOptions.FileSizeLimitBytes, retainedFileCountLimit: logOptions.RetainedFileCountLimit); |
| 100 | + |
94 | 101 | if (logOptions.IsGrafanaLoki) |
95 | 102 | { |
96 | 103 | var grafanaLokiLabels = new List<LokiLabel>(); |
@@ -149,6 +156,31 @@ public static ILogger Create(LogOptions logOptions, bool isDefault = true, Actio |
149 | 156 | } |
150 | 157 |
|
151 | 158 | configurationAction?.Invoke(logger); |
| 159 | + |
| 160 | + string consoleOutputTemplate = "[{Timestamp:HH:mm:ss} {Level:u3}][{TagName}]{Message:lj}{NewLine}{Exception}"; |
| 161 | + string fileOutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}][{FriendlyName}] {Message:lj}{NewLine}{Exception}"; |
| 162 | + |
| 163 | + if (logOptions.ConsoleOutputTemplate.IsNotNullOrEmptyOrWhiteSpace()) |
| 164 | + { |
| 165 | + consoleOutputTemplate = logOptions.ConsoleOutputTemplate; |
| 166 | + } |
| 167 | + |
| 168 | + if (logOptions.FileOutputTemplate.IsNotNullOrEmptyOrWhiteSpace()) |
| 169 | + { |
| 170 | + fileOutputTemplate = logOptions.FileOutputTemplate; |
| 171 | + } |
| 172 | + if (logOptions.IsWriteToFile) |
| 173 | + { |
| 174 | + logger.WriteTo.File(logPath, |
| 175 | + shared: true, |
| 176 | + restrictedToMinimumLevel: logOptions.LogEventLevel, |
| 177 | + outputTemplate: fileOutputTemplate, |
| 178 | + rollingInterval: logOptions.RollingInterval, |
| 179 | + rollOnFileSizeLimit: logOptions.FileSizeLimitBytes > 0, |
| 180 | + fileSizeLimitBytes: logOptions.FileSizeLimitBytes |
| 181 | + ); |
| 182 | + } |
| 183 | + |
152 | 184 | switch (logOptions.LogEventLevel) |
153 | 185 | { |
154 | 186 | case LogEventLevel.Verbose: |
@@ -185,7 +217,9 @@ public static ILogger Create(LogOptions logOptions, bool isDefault = true, Actio |
185 | 217 |
|
186 | 218 | if (logOptions.IsConsole) |
187 | 219 | { |
188 | | - logger.WriteTo.Console(); |
| 220 | + logger.WriteTo.Console(outputTemplate: consoleOutputTemplate, |
| 221 | + restrictedToMinimumLevel: logOptions.LogEventLevel, |
| 222 | + theme: Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme.Literate); |
189 | 223 | } |
190 | 224 |
|
191 | 225 | var serilog = logger.CreateLogger(); |
|
0 commit comments