Удаление файлов журнала Elmah, вручную или есть настройка? - PullRequest
18 голосов
/ 18 декабря 2010

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

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

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

Ответы [ 4 ]

26 голосов
/ 18 декабря 2010

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

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

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

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

1 голос
/ 18 февраля 2015

Этот сценарий SQL удаляет строки старше, чем новейшие строки "size":

declare @size INTEGER = 50;
declare @countno INTEGER;
SELECT @countno = count([ErrorId])  FROM [dbo].[ELMAH_Error]
/*
SELECT TOP (@countno-@size)
       [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 (@countno-@size)
               [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
*/
1 голос
/ 03 апреля 2012

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

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

Вот изображение индексного представления SiteAdmin:

enter image description here

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

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

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

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

0 голосов
/ 03 июля 2014

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

...