Подтвердить что ты не робот

Удаление файлов журнала Elmah вручную или есть настройка?

Как удалить файлы журнала, которые Elmah генерирует на сервере?

Есть ли параметр в Elmah, который я могу использовать для удаления файлов журнала? Я бы предпочел указать некоторые критерии (например, файлы журналов старше 30 дней).

Или я должен написать свой собственный код для этого?

4b9b3361

Ответ 1

Вы можете установить максимальное количество записей журнала, но не существует нативной функции для очистки журналов старше установленной даты. Это хороший запрос функции, хотя!

Если вы сохраняете свои журналы ошибок в памяти, максимальное число, сохраненное по умолчанию, равно 500, и это не требует дополнительной настройки. В качестве альтернативы вы можете определить число, используя ключевое слово size:

<elmah>  
  <errorLog type="Elmah.MemoryErrorLog, Elmah" size="50" />  
</elmah>

Настройка фиксированного размера, очевидно, более важна для ведения журналов на базе данных или на основе XML, где необходимо тщательно управлять ресурсами. Однако вы можете определить фиксированный размер для любого типа журнала.

Ответ 2

В ответ на то, что сказал Фил Уилер выше, в текущем проекте, который я делаю в Mvc4, у нас есть область Mvc, называемая SiteAdmin. Эта область будет отвечать за все обязанности администрации сайта, включая Elmah.

Чтобы избавиться от отсутствия функциональности удаления, я применил функцию для удаления всех текущих записей журнала в Elmah (мы используем версию на основе XML).

Вот изображение индекса сайта SiteAdmin:

enter image description here

  • Просмотреть журнал ошибок - открывает интерфейс пользователя Elmah в новом окне.
  • Очистить журнал ошибок - представляет всплывающее окно подтверждения, а затем удаляет все записи, если пользователь подтверждает.

Если кому-то нужен код в качестве примера, я был бы рад отправить его.

Моя механика может быть легко модифицирована, чтобы обеспечить механизм выборочного удаления по критериям (по дате, по статусу и т.д.).

Точка моего ответа здесь заключается в том, что вы могли бы предоставить функциональность удаления самостоятельно и не форкировать исходный код проекта Elmah.

Ответ 3

По крайней мере, в рамках проекта MVC вы можете перейти в каталог App_Data/Elmah.Errors, чтобы удалить файлы XML ошибок, которые вы хотите удалить.

Ответ 4

Этот SQL script удаляет строки, более старые, чем самые новые "размерные" строки:

declare @size INTEGER = 50;
declare @countno INTEGER;
SELECT @countno = count([ErrorId])  FROM [dbo].[ELMAH_Error]
/*
SELECT TOP (@[email protected])
       [ErrorId]
      ,[TimeUtc]
      ,[Sequence]
  FROM [dbo].[ELMAH_Error]
  order by [Sequence] asc
GO
*/
DELETE FROM [dbo].[ELMAH_Error]
WHERE [ErrorId] IN (
    SELECT t.[ErrorId] FROM (
       SELECT TOP (@[email protected])
               [ErrorId]
              ,[TimeUtc]
              ,[Sequence]
          FROM [dbo].[ELMAH_Error]
          order by [Sequence] asc
      ) t
    )
GO


/*
-- Print remaining rows
SELECT * FROM [dbo].[ELMAH_Error]
order by [Sequence] desc
*/