Обновил методы логирования
This commit is contained in:
46
SfeduSchedule/Logging/LoggerExtensions.cs
Normal file
46
SfeduSchedule/Logging/LoggerExtensions.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ using System.Text.Json;
|
|||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
using ModeusSchedule.Abstractions;
|
using ModeusSchedule.Abstractions;
|
||||||
using ModeusSchedule.Abstractions.DTO;
|
using ModeusSchedule.Abstractions.DTO;
|
||||||
|
using SfeduSchedule.Logging;
|
||||||
|
|
||||||
namespace SfeduSchedule.Services;
|
namespace SfeduSchedule.Services;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class ModeusHttpClient
|
|||||||
public void SetToken(string? token)
|
public void SetToken(string? token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(token)) {
|
if (string.IsNullOrWhiteSpace(token)) {
|
||||||
_logger.LogError("SetToken: Предоставленный токен пустой.");
|
_logger.LogErrorHere("Предоставленный токен пустой.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,8 +41,7 @@ public class ModeusHttpClient
|
|||||||
var response = await _httpClient.SendAsync(request);
|
var response = await _httpClient.SendAsync(request);
|
||||||
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
_logger.LogError("GetScheduleAsync: Неуспешный статус при получении расписания: {StatusCode}, Request: {msr}",
|
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
|
||||||
response.StatusCode, msr);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return await response.Content.ReadAsStringAsync();
|
return await response.Content.ReadAsStringAsync();
|
||||||
@@ -54,8 +54,7 @@ public class ModeusHttpClient
|
|||||||
var response = await _httpClient.SendAsync(request);
|
var response = await _httpClient.SendAsync(request);
|
||||||
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
_logger.LogError("GetAttendeesAsync: Неуспешный статус при получении расписания: {StatusCode}, eventId: {eventId}",
|
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, eventId: {eventId}");
|
||||||
response.StatusCode, eventId);
|
|
||||||
}
|
}
|
||||||
List<Attendees>? attendees;
|
List<Attendees>? attendees;
|
||||||
try
|
try
|
||||||
@@ -65,7 +64,7 @@ public class ModeusHttpClient
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex, "GetAttendeesAsync: Deserialization failed.");
|
_logger.LogErrorHere(ex, "Deserialization failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new List<Attendees>();
|
return new List<Attendees>();
|
||||||
@@ -80,8 +79,7 @@ public class ModeusHttpClient
|
|||||||
var response = await _httpClient.SendAsync(request);
|
var response = await _httpClient.SendAsync(request);
|
||||||
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
_logger.LogError("GetScheduleAsync: Неуспешный статус при получении расписания: {StatusCode}, Request: {requestDto}",
|
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, Request: {JsonSerializer.Serialize(requestDto, GlobalConsts.JsonSerializerOptions)}");
|
||||||
response.StatusCode, requestDto);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return await response.Content.ReadAsStringAsync();
|
return await response.Content.ReadAsStringAsync();
|
||||||
@@ -99,11 +97,10 @@ public class ModeusHttpClient
|
|||||||
}), Encoding.UTF8, "application/json");
|
}), Encoding.UTF8, "application/json");
|
||||||
var response = await _httpClient.SendAsync(request);
|
var response = await _httpClient.SendAsync(request);
|
||||||
|
|
||||||
_logger.LogInformation("GetGuidAsync: Ответ получен: {StatusCode}", response.StatusCode);
|
_logger.LogInformationHere($"Ответ получен: {response.StatusCode}");
|
||||||
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
if (response.StatusCode != System.Net.HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
_logger.LogError("GetGuidAsync: Неуспешный статус при получении расписания: {StatusCode}, Name: {fullName}",
|
_logger.LogErrorHere($"Неуспешный статус при получении расписания: {response.StatusCode}, Name: {fullName}");
|
||||||
response.StatusCode, fullName);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,8 +117,7 @@ public class ModeusHttpClient
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
_logger.LogWarning(
|
_logger.LogWarningHere($"Не удалось получить идентификатор пользователя. FullName={fullName}");
|
||||||
"GetGuidAsync: не удалось получить идентификатор пользователя. FullName={FullName}", fullName);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Ical.Net.DataTypes;
|
|||||||
using Ical.Net.Serialization;
|
using Ical.Net.Serialization;
|
||||||
using ModeusSchedule.Abstractions;
|
using ModeusSchedule.Abstractions;
|
||||||
using ModeusSchedule.Abstractions.DTO;
|
using ModeusSchedule.Abstractions.DTO;
|
||||||
|
using SfeduSchedule.Logging;
|
||||||
|
|
||||||
namespace SfeduSchedule.Services;
|
namespace SfeduSchedule.Services;
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ public class ModeusService
|
|||||||
var schedule = await GetScheduleAsync(msr);
|
var schedule = await GetScheduleAsync(msr);
|
||||||
if (schedule == null)
|
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");
|
throw new Exception("Schedule is null");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,25 +42,16 @@ public class ModeusService
|
|||||||
switch (scheduleJson)
|
switch (scheduleJson)
|
||||||
{
|
{
|
||||||
case null:
|
case null:
|
||||||
_logger.LogError(
|
_logger.LogErrorHere($"scheduleJson is null. Schedule: {schedule}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
|
||||||
"GetScheduleJsonAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {msr}",
|
|
||||||
schedule, JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
|
|
||||||
break;
|
break;
|
||||||
case { Embedded: null }:
|
case { Embedded: null }:
|
||||||
_logger.LogError(
|
_logger.LogErrorHere($"scheduleJson.Embedded is null. Response: {schedule}\nscheduleJson: {scheduleJson}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
|
||||||
"GetScheduleJsonAsync: scheduleJson.Embedded is null. Response: {@response}\nscheduleJson: {@scheduleJson}\n Request: {msr}",
|
|
||||||
schedule, scheduleJson, JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
|
|
||||||
break;
|
break;
|
||||||
case { Embedded.Events: null }:
|
case { Embedded.Events: null }:
|
||||||
_logger.LogError(
|
_logger.LogErrorHere($"scheduleJson.Embedded.Events is null. Response: {schedule}\nscheduleJson: {scheduleJson}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
|
||||||
"GetScheduleJsonAsync: scheduleJson.Embedded.Events is null. Response: {@response}\nEmbedded: {@Embedded}\n Request: {msr}",
|
|
||||||
schedule, scheduleJson.Embedded,
|
|
||||||
JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
|
|
||||||
break;
|
break;
|
||||||
case { Embedded.Events.Length: 0 }:
|
case { Embedded.Events.Length: 0 }:
|
||||||
_logger.LogWarning(
|
_logger.LogWarningHere($"scheduleJson.Embedded.Events is empty. Embedded: {scheduleJson.Embedded}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
|
||||||
"GetScheduleJsonAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {msr}",
|
|
||||||
scheduleJson.Embedded, JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return scheduleJson;
|
return scheduleJson;
|
||||||
@@ -67,9 +59,7 @@ public class ModeusService
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex,
|
_logger.LogErrorHere($"Deserialization failed. Schedule: {schedule}\n Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}\n Exception: {ex}");
|
||||||
"GetScheduleJsonAsync: Deserialization failed. Schedule: {Schedule}\n Request: {msr}", schedule,
|
|
||||||
JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -80,8 +70,7 @@ public class ModeusService
|
|||||||
var scheduleJson = await GetScheduleJsonAsync(msr);
|
var scheduleJson = await GetScheduleJsonAsync(msr);
|
||||||
if (scheduleJson == null)
|
if (scheduleJson == null)
|
||||||
{
|
{
|
||||||
_logger.LogError("GetIcsAsync: scheduleJson is null after deserialization. Request: " +
|
_logger.LogErrorHere($"scheduleJson is null after deserialization. Request: {JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions)}");
|
||||||
JsonSerializer.Serialize(msr, GlobalConsts.JsonSerializerOptions));
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,8 +178,7 @@ public class ModeusService
|
|||||||
|
|
||||||
var serializer = new CalendarSerializer();
|
var serializer = new CalendarSerializer();
|
||||||
var serializedCalendar = serializer.SerializeToString(calendar);
|
var serializedCalendar = serializer.SerializeToString(calendar);
|
||||||
_logger.LogInformation("GetIcsAsync: serialized calendar created. Length: {Length}",
|
_logger.LogInformationHere($"serialized calendar created. Length: {serializedCalendar?.Length ?? 0}");
|
||||||
serializedCalendar?.Length ?? 0);
|
|
||||||
return serializedCalendar;
|
return serializedCalendar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user