demoshop

demo, trying to be the best_

Elmah 整合 HipChat

demo 寫過兩篇有關於 HipChat 的應用,在實務上我現在已經將 HipChat 當成第一線看 Log 的工具,當發現 HipChat 的 Log 有比較重要的時候才會去線上的 Elmah 觀看,如果您還不知道 Elmah 的話可是務必要瞭解它,它對於網站開發者的幫助非常的大,極簡化的解釋就是 Elmah 可以協助記錄未預期的錯誤,因為這種錯誤很重要,所以寫入 HipChat 即時觀察也是合情合理的。

Elmah 本身是支援發送 Http 的,但是它的名稱叫做 errorTweet ,既然支援了 tweet 那改成 HipChat 也不會是大問題。

簡單介紹設定方式,首先在 Web.config 的 configSections 節點內確定要有 errorTweet 的設定

<configSections>
  <sectionGroup name="elmah">
    <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
    <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
    <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
    <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah" />
  </sectionGroup>
</configSections>

 

然後在 system.web 節點內的 httpModules 也需要加入

  <system.web>
    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
      <add name="ErrorTweet" type="Elmah.ErrorTweetModule, Elmah" />
    </httpModules>

 

最後 system.webServer 節點內的 modules 也請確定有

  <system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorTweet" type="Elmah.ErrorTweetModule, Elmah" preCondition="managedHandler" />
    </modules>

 

如果你確定只會放在 IIS7以上的話其實就設定 system.webServer 即可。

 

最後在 elmah 內給它發送的網址即可

<elmah>
    <security allowRemoteAccess="true" />
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" />
    <errorTweet maxStatusLength="100" url="https://api.hipchat.com/v1/rooms/message" formFormat="format=text&amp;auth_token=999999999999999&amp;room_id=99999999999999&amp;from=Elmah&amp;color=red&amp;message={0}" />
  </elmah>

 

依據上面的方式設定好後,只要 Elmah 接收到訊息就會同時發送到 hipchat 內,十分的方便!

 

  • 如果您不了解如何申請 HipChat 的 API token 請參考下方[將 HipChat 當系統 LOG 使用]一文
  • 如果你對於 Web.config 設定不熟的話,建議直接使用 NuGet 安裝 Elmah.mvc 所有設定位置都有了,只需要調整一下即可。

回應討論