如何刪除Elmah在服務器上生成的日誌文件?Elmah日誌文件刪除,手動還是有設置?
Elmah中有一個設置可以用來刪除日誌文件嗎?我寧願指定一些標準(例如,超過30天的日誌文件)。
或者我應該寫我自己的代碼?
如何刪除Elmah在服務器上生成的日誌文件?Elmah日誌文件刪除,手動還是有設置?
Elmah中有一個設置可以用來刪除日誌文件嗎?我寧願指定一些標準(例如,超過30天的日誌文件)。
或者我應該寫我自己的代碼?
您可以設置日誌條目的最大數量,但是不存在用於清除日期早於給定日期的日誌的本機函數。雖然這是一個很好的功能要求!
如果您將錯誤日誌存儲在內存中,默認情況下存儲的最大數量爲500,這不需要額外的配置。另外,您也可以使用關鍵字size
定義數量:
<elmah>
<errorLog type="Elmah.MemoryErrorLog, Elmah" size="50" />
</elmah>
設置一個固定大小顯然是在內存中或基於XML的日誌記錄,其中資源需要嚴格的管理更重要。不過,您可以爲任何日誌類型定義固定大小。
爲了迴應Phil Wheeler在上面提到的問題,在Mvc4的一個當前項目中,我們有一個叫做SiteAdmin的Mvc區域。該地區將負責所有現場管理工作,包括Elmah。
爲了克服缺乏刪除功能,我實現了刪除Elmah中所有當前日誌條目的功能(我們使用基於XML的版本)。
這裏是SiteAdmin索引視圖的圖像:
如果任何人需要代碼作爲例子,我很樂意發送它。
我的機制很容易修改,以便根據需要按標準提供選擇性刪除機制(按日期,按狀態代碼等)。
我的答案在這裏的一點是,你可以自己提供刪除功能,而不是分開Elmah項目的開源代碼。
不再使用基於XML的版本,而是選擇使用SQLServer。 – 2013-02-11 21:25:19
你是如何從Elmah設置獲取日誌文件夾路徑的? – Rumplin 2014-02-25 08:37:16
這段代碼是否終結於公衆可見的地方?主旨或github? – 2015-02-11 15:00:51
至少在MVC項目中,您可以轉至App_Data/Elmah.Errors目錄以刪除要刪除的錯誤XML文件。
該SQL腳本刪除比被最新的「大小」行年長的行:
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
*/
這無疑是一個ELMAH區域就是完全缺乏,雖然它已被要求多次。不應該很難允許刪除單個日誌條目以及清除所有的功能。不幸的是,你自己的功能。 – 2012-04-02 15:16:13
這是一個開源項目。如果您有時間和傾向,請分解代碼並添加該功能。 – 2012-04-02 18:10:02
風險必須實現或合併到您的分叉代碼的變化?不用,謝謝兄弟。這是任何日誌工具IMO的基本最小功能。它應該包含在項目中,並且自該項目實現以來一直被要求。 – 2012-04-02 18:14:59