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

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

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

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


person danielovich    schedule 18.12.2010    source источник


Ответы (4)


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

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

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

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

person Phil.Wheeler    schedule 18.12.2010
comment
Это, безусловно, та область в Эльме, которой совершенно не хватает, хотя ее просили много раз. Не должно быть так сложно разрешить удаление отдельных записей журнала, а также очистить все функции. К сожалению, вы сами по себе для этой функциональности. - person Ed DeGagne; 02.04.2012
comment
Это проект с открытым исходным кодом. Если у вас есть время и желание, разветвите код и добавьте функцию. - person Phil.Wheeler; 02.04.2012
comment
И рискуете ли вы внедрять или объединять изменения в свой разветвленный код? Нет спасибо брат. Это базовая минимальная функциональность любого инструмента ведения журнала, IMO. Он должен быть включен в проект и был запрошен с тех пор, как проект был реализован. - person Ed DeGagne; 02.04.2012
comment
@Phil.Wheeler. Не могли бы вы добавить к этому ответу, как вы ограничиваете количество записей в журнале или ссылку на то, где это задокументировано? - person Ben Anderson; 29.01.2013
comment
@Ed.DeGagne, почему вы так не хотите вносить свой вклад в бесплатный инструмент? Вам не нужно делать форк, просто отправьте патч мейнтейнерам. - person Aidan Ryan; 03.05.2013
comment
это относится и к ELmah при использовании с сервером Sql? - person DevDave; 29.07.2013
comment
Только что попробовал ‹errorLog type=Elmah.XmlFileErrorLog, Elmah logPath=~/app_data size=10 /›, но, похоже, не работает. 29 файлов и лазание... :( - person William T. Mallard; 26.02.2015
comment
Я не уверен, почему, но мой максимальный размер по умолчанию — 15. - person desm; 29.05.2018

Этот сценарий SQL удаляет строки старше, чем самые новые строки «размера»:

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
*/
person RaSor    schedule 18.02.2015

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

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

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

введите здесь описание изображения

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

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

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

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

person Ed DeGagne    schedule 03.04.2012
comment
Больше не используется версия на основе XML, вместо этого решили использовать SQLServer. - person Ed DeGagne; 12.02.2013
comment
Как вы получили путь к папке журнала из настроек Elmah? - person Rumplin; 25.02.2014
comment
Этот код когда-нибудь оказывался где-то видимым для публики? Гист или гитхаб? - person Melissa Avery-Weir; 11.02.2015
comment
Я знаю, что семь лет спустя это далеко не так, но у вас все еще есть этот исходный код? - person InteXX; 08.08.2019

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

person J Hunt    schedule 03.07.2014