2010-12-18 13 views
17

Elmahがサーバー上で生成するログファイルを削除するにはどうすればよいですか?Elmahログファイルを手動で削除するか、設定がありますか?

Elmahにログファイルを削除するための設定がありますか?いくつかの基準(たとえば、30日以上経過したログファイル)を指定することをお勧めします。

それとも私自身のコードを書くべきですか?

答えて

24

ログエントリの最大数を設定できますが、指定した日付より古いログを消去するネイティブ関数はありません。しかし、それは良い機能のリクエストです!

エラーログをメモリに保存する場合、保存される最大数はデフォルトで500です。これには追加設定が必要ありません。また、あなたはsizeキーワードを使用して数を定義することができます:固定サイズを設定する

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

明らかに資源が密接に管理する必要があり、インメモリまたはXMLベースのロギングのためのより重要です。あなたは任意のログタイプの固定サイズを定義することができます。

+0

これは確かにそれが何度も要求してきたが、完全に、不足しているELMAH内の領域です。個々のログエントリの削除を許可するのは難しいことではなく、すべての機能をクリアする必要があります。残念ながら、あなたはその機能のためにあなた自身でいます。 –

+7

オープンソースプロジェクトです。時間と傾きがある場合は、コードをフォークして機能を追加してください。 –

+1

フォークされたコードに変更を実装またはマージする必要がありますか?いいえ、兄弟です。これは、あらゆるロギングツールIMOの基本的な最小限の機能です。それはプロジェクトに含めるべきであり、プロジェクトが成果を上げてから要求されています。 –

2

私がMvc4でやっている現在のプロジェクトでは、Phil Wheelerが前述したように、SiteAdminというMvc領域があります。このエリアは、Elmahを含むすべての現場管理業務を担当します。

削除機能の欠如を乗り越えるために、Elmahの現在のすべてのログエントリを削除する機能を実装しました(私たちはXMLベースのバージョンを使用しています)。ここで

はSiteAdminインデックスビューの画像です:

enter image description here

  • の表示エラーログ - 新しいウィンドウでELMAH UIを開きます。
  • エラーログのクリア - 確認ポップアップを表示し、ユーザーが確認した場合はすべてのエントリを削除します。

誰かが例としてコードを必要としている場合は、私も一緒に送信してください。

私のメカニックは、必要に応じて(日付、ステータスコードなどによって)基準による選択的削除の仕組みを提供するためにかなり簡単に変更できます。

私の答えのポイントは、自分で削除機能を提供し、Elmahプロジェクトのオープンソースコードをフォークしないということです。

+0

XMLベースのバージョンを使用しなくても、代わりにSQLServerを使用するようにしました –

+0

Elmah設定からログフォルダパスを取得した方法 – Rumplin

+0

このコードは、 ?要点またはgithub? –

1

少なくともMVCプロジェクト内では、App_Data/Elmah.Errorsディレクトリに移動して、削除するエラーXMLファイルを削除できます。

1

この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 
*/ 
関連する問題