mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.2 KiB
42 lines
1.2 KiB
using ErsatzTV.Core.Domain; |
|
using Newtonsoft.Json.Linq; |
|
using Serilog.Events; |
|
|
|
namespace ErsatzTV.Application.Logs; |
|
|
|
internal static class Mapper |
|
{ |
|
internal static LogEntryViewModel ProjectToViewModel(LogEntry logEntry) |
|
{ |
|
string message = logEntry.RenderedMessage; |
|
if (!string.IsNullOrWhiteSpace(logEntry.Properties)) |
|
{ |
|
foreach (KeyValuePair<string, JToken> property in JObject.Parse(logEntry.Properties)) |
|
{ |
|
var token = $"{{{property.Key}}}"; |
|
if (message.Contains(token)) |
|
{ |
|
message = message.Replace(token, property.Value.ToString()); |
|
} |
|
|
|
var destructureToken = $"{{@{property.Key}}}"; |
|
if (message.Contains(destructureToken)) |
|
{ |
|
message = message.Replace(destructureToken, property.Value.ToString()); |
|
} |
|
} |
|
} |
|
|
|
if (!Enum.TryParse(logEntry.Level, out LogEventLevel level)) |
|
{ |
|
level = LogEventLevel.Debug; |
|
} |
|
|
|
return new LogEntryViewModel( |
|
logEntry.Id, |
|
logEntry.Timestamp, |
|
level, |
|
logEntry.Exception, |
|
message); |
|
} |
|
}
|
|
|