Visual Studioで使用している構成に基づいて、アプリ名を変更する必要があります。たとえば、デバッグ構成を使用している場合、Elmah_Errorテーブルの[アプリケーション]フィールドにアプリ名を「App_Debug」と表示します。誰かがこれを経験したことがありますか?またはそれを行う別の方法はありますか?
2 に答える
これは、純粋にマークアップで実行できるようになりました。web.config ファイルのセクションの要素にapplicationName
属性を追加するだけです。例:errorLog
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="connectionString" applicationName="myApp" />
私はこれをテストしましたが、例外をログに記録するときと、 を介してログを表示するときの両方で機能しますElmah.axd
。
OPの場合、プログラムでも設定できると想像できますが、私はそれをテストしませんでした。私にとっては、ほとんどのシナリオでマークアップ アプローチで十分だと思います。
既定では、Elmah は AppPool のアプリケーション GUID を既定のアプリケーション名として使用します。HTTP モジュールを介して作成された Web インターフェイスを見ると、Elmah_Error テーブル内のエラーを識別するためのキーとしてこれが使用されます。
私は今年初めに、会社のためにこのオプションを検討する任務を負っていました。Elmah はHttpRuntime.AppDomainAppId
ErrorLog.cs ファイルからアプリケーション名を取得するため、デフォルトでこれを操作する方法が見つかりませんでした。好きなキーで操作できます。ただし、これは AppPool の GUID です。
そうは言っても、ErrorLog.cs ファイルを操作して、Elmah をハンドラー ベースのフレームワークではなく呼び出し可能なフレームワークに変え、ApplicationName を設定できるようにすることができました。私がやったことは、以下のように名前を設定できるプロパティを含めるように ErrorLog.cs を変更することでした:
public virtual string ApplicationName
{
get
{
if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; }
return _applicationName;
}
set { _applicationName = value; }
}
HttpRuntime.AppDomainAppId
おそらく、これを別の方法で調整し、ApplicationNameを代わりに web.config から取得した値に設定する必要があります。全体として、それは可能です。私が行った方法はメソッドを強化したErrorLog.Log(ex)
ので、Elmah には Web アプリケーションを超えた呼び出し可能なフレームワークがあります。振り返ってみると、代わりに app/web.config アプローチを使用したかったと思います。
Elmah でアプリケーション名を変更する際に注意すべき点が 1 つあります。/elmah/default.aspx インターフェイスを生成する http ハンドラーは機能しなくなります。私はまだそのようなものに戻る時間を見つけようとしています。ただし、実装時にカスタム インターフェイスの作成を検討する必要がある場合があります。