#aspnetboilerplate
#aspnetboilerplate
Вопрос:
Мои журналы аудита выходят из-под контроля, поэтому я решил, что хочу проверять только все запросы, которые в основном не являются Get
запросом. Есть ли очень простой способ сделать это из конфигурации?
Документация здесь: https://aspnetboilerplate.com/Pages/Documents/Audit-Logging
Говорит:
Примечание: В дополнение к стандартной конфигурации аудита, MVC и ASP.NET Основные модули определяют конфигурации для включения / отключения ведения журнала аудита для действий.
Но я не смог найти больше информации о том, что именно это означает.
В качестве последнего средства я знаю, что это сработало бы, если бы я перешел к каждому классу и добавил [DisableAuditing]
, а затем [Audited]
к конечным точкам, не являющимся Get, но это кажется немного запутанным.
Лучшее решение: я просто хочу иметь простой способ выбирать только не GET
запросы и проверять их.
Второе лучшее решение: я просто хочу, чтобы [Audited]
проверялись только методы. Я не хочу идти и писать [DisabledAuditing]
в каждом классе.
Ответ №1:
Вы можете создать AuditStore
для этого, а затем заменить исходный AuditStore в service YourAplicationNameCoreModule
Вот пример
public class YourAuditStore : AuditingStore
{
public ILogger<AuditingStore> Logger { get; set; }
private readonly IRepository<AuditLog, long> _auditLogRepository;
private readonly ISettingManager _settingManager;
public YourAuditStore(IRepository<AuditLog, long> auditLogRepository, ISettingManager settingManager) : base(auditLogRepository)
{
_auditLogRepository = auditLogRepository;
_settingManager = settingManager;
}
public override async Task SaveAsync(AuditInfo auditInfo)
{
AuditLog auditLog = new AuditLog();
bool logErrorsOnly = await _settingManager.GetSettingValueAsync<bool>(AppSettings.Logging.LogOnErrorsOnly);
var exceptionMessage = auditInfo.Exception != null ? auditInfo.Exception.ToString() : null;
if ((logErrorsOnly amp;amp; exceptionMessage != null) || !logErrorsOnly)
{
auditLog = await _auditLogRepository.InsertAsync(AuditLog.CreateFromAuditInfo(auditInfo));
}
}
}
Как вы можете видеть, вы можете фильтровать все, что хотите, в SaveAsync
методе по мере получения AuditInfo
, вы можете проверить, отличается ли метод Get
, а затем сохранить
Добавьте следующий код в YourApplicationNameCoreModule
PreInitialize
метод on
public override void PreInitialize()
{
Configuration.ReplaceService<IAuditingStore, YourAuditStore>();
}