* cleanup scanner project * cleanup infrastructure projects * cleanup ffmpeg project * cleanup core project * cleanup app project * cleanup main project * update dependencies * code cleanup
31 lines
922 B
C#
31 lines
922 B
C#
using System.Text.RegularExpressions;
|
|
using Serilog.Events;
|
|
|
|
namespace ErsatzTV.Application.Logs;
|
|
|
|
internal sealed partial class Mapper
|
|
{
|
|
[GeneratedRegex(@"(.*)\[(DBG|INF|WRN|ERR|FTL)\](.*)")]
|
|
private static partial Regex LogEntryRegex();
|
|
|
|
internal static Option<LogEntryViewModel> ProjectToViewModel(string line)
|
|
{
|
|
Match match = LogEntryRegex().Match(line);
|
|
if (!match.Success || !DateTimeOffset.TryParse(match.Groups[1].Value, out DateTimeOffset timestamp))
|
|
{
|
|
return None;
|
|
}
|
|
|
|
LogEventLevel level = match.Groups[2].Value switch
|
|
{
|
|
"FTL" => LogEventLevel.Fatal,
|
|
"ERR" => LogEventLevel.Error,
|
|
"WRN" => LogEventLevel.Warning,
|
|
"INF" => LogEventLevel.Information,
|
|
_ => LogEventLevel.Debug
|
|
};
|
|
|
|
return new LogEntryViewModel(timestamp, level, match.Groups[3].Value);
|
|
}
|
|
}
|