Обновил методы логирования

This commit is contained in:
2025-11-21 23:21:56 +03:00
parent daf3639038
commit 33814bb6f4
3 changed files with 64 additions and 34 deletions

View File

@@ -0,0 +1,46 @@
using System.Runtime.CompilerServices;
namespace SfeduSchedule.Logging;
public static class LoggerExtensions
{
public static void LogTraceHere(this ILogger logger, string message, [CallerMemberName] string memberName = "")
{
logger.LogTrace("[{Member}] {Message}", memberName, message);
}
public static void LogDebugHere(this ILogger logger, string message, [CallerMemberName] string memberName = "")
{
logger.LogDebug("[{Member}] {Message}", memberName, message);
}
public static void LogInformationHere(this ILogger logger, string message, [CallerMemberName] string memberName = "")
{
logger.LogInformation("[{Member}] {Message}", memberName, message);
}
public static void LogWarningHere(this ILogger logger, string message, [CallerMemberName] string memberName = "")
{
logger.LogWarning("[{Member}] {Message}", memberName, message);
}
public static void LogErrorHere(this ILogger logger, string message, [CallerMemberName] string memberName = "")
{
logger.LogError("[{Member}] {Message}", memberName, message);
}
public static void LogErrorHere(this ILogger logger, Exception exception, string message, [CallerMemberName] string memberName = "")
{
logger.LogError(exception, "[{Member}] {Message}", memberName, message);
}
public static void LogCriticalHere(this ILogger logger, string message, [CallerMemberName] string memberName = "")
{
logger.LogCritical("[{Member}] {Message}", memberName, message);
}
public static void LogCriticalHere(this ILogger logger, Exception exception, string message, [CallerMemberName] string memberName = "")
{
logger.LogCritical(exception, "[{Member}] {Message}", memberName, message);
}
}

View File

@@ -3,6 +3,7 @@ using System.Text.Json;
using Microsoft.Net.Http.Headers;
using ModeusSchedule.Abstractions;
using ModeusSchedule.Abstractions.DTO;
using SfeduSchedule.Logging;
namespace SfeduSchedule.Services;
@@ -23,7 +24,7 @@ public class ModeusHttpClient
public void SetToken(string? token)
{
if (string.IsNullOrWhiteSpace(token)) {
_logger.LogError("SetToken: Предоставленный токен пустой.");
_logger.LogErrorHere("Предоставленный токен пустой.");
return;
}
@@ -40,8 +41,7 @@ public class ModeusHttpClient
var response = await _httpClient.SendAsync(request);
if (response.StatusCode != System.Net.HttpStatusCode.OK)
{
_logger.LogError("GetScheduleAsync: Неуспешный статус при получении расписания: {StatusCode}, Request: {msr}",
response.StatusCode, msr);
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
return null;
}
return await response.Content.ReadAsStringAsync();
@@ -54,8 +54,7 @@ public class ModeusHttpClient
var response = await _httpClient.SendAsync(request);
if (response.StatusCode != System.Net.HttpStatusCode.OK)
{
_logger.LogError("GetAttendeesAsync: Неуспешный статус при получении расписания: {StatusCode}, eventId: {eventId}",
response.StatusCode, eventId);
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, eventId: {eventId}");
}
List<Attendees>? attendees;
try
@@ -65,7 +64,7 @@ public class ModeusHttpClient
}
catch (Exception ex)
{
_logger.LogError(ex, "GetAttendeesAsync: Deserialization failed.");
_logger.LogErrorHere(ex, "Deserialization failed.");
}
return new List<Attendees>();
@@ -80,8 +79,7 @@ public class ModeusHttpClient
var response = await _httpClient.SendAsync(request);
if (response.StatusCode != System.Net.HttpStatusCode.OK)
{
_logger.LogError("GetScheduleAsync: Неуспешный статус при получении расписания: {StatusCode}, Request: {requestDto}",
response.StatusCode, requestDto);
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, Request: {JsonSerializer.Serialize(requestDto, GlobalConsts.JsonSerializerOptions)}");
return null;
}
return await response.Content.ReadAsStringAsync();
@@ -99,11 +97,10 @@ public class ModeusHttpClient
}), Encoding.UTF8, "application/json");
var response = await _httpClient.SendAsync(request);
_logger.LogInformation("GetGuidAsync: Ответ получен: {StatusCode}", response.StatusCode);
_logger.LogInformationHere($"Ответ получен: {response.StatusCode}");
if (response.StatusCode != System.Net.HttpStatusCode.OK)
{
_logger.LogError("GetGuidAsync: Неуспешный статус при получении расписания: {StatusCode}, Name: {fullName}",
response.StatusCode, fullName);
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, Name: {fullName}");
return null;
}
@@ -120,8 +117,7 @@ public class ModeusHttpClient
}
catch
{
_logger.LogWarning(
"GetGuidAsync: не удалось получить идентификатор пользователя. FullName={FullName}", fullName);
_logger.LogWarningHere($"Не удалось получить идентификатор пользователя. FullName={fullName}");
return null;
}

View File

@@ -5,6 +5,7 @@ using Ical.Net.DataTypes;
using Ical.Net.Serialization;
using ModeusSchedule.Abstractions;
using ModeusSchedule.Abstractions.DTO;
using SfeduSchedule.Logging;
namespace SfeduSchedule.Services;
@@ -30,7 +31,7 @@ public class ModeusService
var schedule = await GetScheduleAsync(msr);
if (schedule == null)
{
_logger.LogError("GetScheduleJsonAsync: schedule is null. {@Request}", msr);
_logger.LogErrorHere($"schedule is null. {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
throw new Exception("Schedule is null");
}
@@ -41,25 +42,16 @@ public class ModeusService
switch (scheduleJson)
{
case null:
_logger.LogError(
"GetScheduleJsonAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {msr}",
schedule, JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
_logger.LogErrorHere($"scheduleJson is null. Schedule: {schedule}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
break;
case { Embedded: null }:
_logger.LogError(
"GetScheduleJsonAsync: scheduleJson.Embedded is null. Response: {@response}\nscheduleJson: {@scheduleJson}\n Request: {msr}",
schedule, scheduleJson, JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
_logger.LogErrorHere($"scheduleJson.Embedded is null. Response: {schedule}\nscheduleJson: {scheduleJson}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
break;
case { Embedded.Events: null }:
_logger.LogError(
"GetScheduleJsonAsync: scheduleJson.Embedded.Events is null. Response: {@response}\nEmbedded: {@Embedded}\n Request: {msr}",
schedule, scheduleJson.Embedded,
JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
_logger.LogErrorHere($"scheduleJson.Embedded.Events is null. Response: {schedule}\nscheduleJson: {scheduleJson}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
break;
case { Embedded.Events.Length: 0 }:
_logger.LogWarning(
"GetScheduleJsonAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {msr}",
scheduleJson.Embedded, JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
_logger.LogWarningHere($"scheduleJson.Embedded.Events is empty. Embedded: {scheduleJson.Embedded}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
break;
default:
return scheduleJson;
@@ -67,9 +59,7 @@ public class ModeusService
}
catch (Exception ex)
{
_logger.LogError(ex,
"GetScheduleJsonAsync: Deserialization failed. Schedule: {Schedule}\n Request: {msr}", schedule,
JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
_logger.LogErrorHere($"Deserialization failed. Schedule: {schedule}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}\n Exception: {ex}");
}
return null;
@@ -80,8 +70,7 @@ public class ModeusService
var scheduleJson = await GetScheduleJsonAsync(msr);
if (scheduleJson == null)
{
_logger.LogError("GetIcsAsync: scheduleJson is null after deserialization. Request: " +
JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
_logger.LogErrorHere($"scheduleJson is null after deserialization. Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
return null;
}
@@ -189,8 +178,7 @@ public class ModeusService
var serializer = new CalendarSerializer();
var serializedCalendar = serializer.SerializeToString(calendar);
_logger.LogInformation("GetIcsAsync: serialized calendar created. Length: {Length}",
serializedCalendar?.Length ?? 0);
_logger.LogInformationHere($"serialized calendar created. Length: {serializedCalendar?.Length ?? 0}");
return serializedCalendar;
}