2013-07-17 35 views
2

誰能幫我成功的Web請求的情況下登錄短信瞭解關於如何使用ELMAH和C#記錄的自定義消息,在成功的Web請求的情況下返回狀態碼200如何使用ELMAH和C#

有沒有類似於下面提到的方法:

Elmah.ErrorSignal.FromCurrentContext().Raise(ex); 

記錄自定義消息。

代碼示例將非常有用。

感謝&問候, 桑托斯·庫馬爾Patro

回答

3

據我所知,ELMAH只處理異常(錯誤日誌記錄模塊和處理),但這種小伎倆,你可以把它記錄任何你想要的,只要你要

注意,這可能不是唯一或最佳的方法來解決你的問題

ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("blah blah blah whatever you want")); //ELMAH Signaling 
+0

非常感謝。它幫助了我,但請你讓我知道有什麼方法可以替代代碼:新的NotImplementedException與一些自定義類,這可能會幫助我區分正在發生的其他類型異常。 –

+0

嗨!如果它是從Exception類繼承的,那麼可以使用自定義類,因此它也可能是某種異常,此鏈接可能有所幫助: http://www.codeproject.com/Tips/90646/Custom-exceptions- in-C-NET –

+0

祝你好運,如果有人有更好的方式來做到這一點,請告訴我們! (我也需要它!) 我真的很喜歡ELMAH,我在我的所有ASP.NET網站中都使用它,它在webservices項目中也能正常工作。 –

0

我意識到這一點,而遲到了,但我碰到這篇文章想進來也會向Elmah發佈一些「非例外」信息。

我開始用自定義名稱創建一個新的Exception對象,該名稱將在我的數據庫的Type字段中,但那不完全是我想要的。然後我注意到Elmah想要一個Error對象。而Type字段是{ get; set; },所以我有我的答案。

我創建了一個靜態輔助類,使每個我需要它的時候它更少的代碼:

public static class ElmahTools { 

    public static Error LogHangFireInfo(string message) { 
    var Result = new Error(new Exception(message)); 

    Result.Type = "Hangfire Info"; 

    return Result; 
    } 
} 

在這裏我要記錄的信息類的頂部,我增加了以下內容:

private static readonly Elmah.ErrorLog ErrorRepo = Elmah.ErrorLog.GetDefault(null); 
在我的代碼,在這裏我想實際登錄信息

然後,我有以下幾點:

ErrorRepo.Log(ElmahTools.LogHangFireInfo($"Job: {context.BackgroundJob?.Id} state has changed from {context.OldStateName} to {context.NewState.Name}")); 

我最初只是打算做:

new Error { Type = "My Custom Info", Message = "Some message" }; 

但是失敗,因爲TimeUtc不是在充滿所以我只是簡單地創建一個相當空Error與消息和改變正是我需要後(例如。 Type。)

希望這可以幫助別人。