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&auth_token=999999999999999&room_id=99999999999999&from=Elmah&color=red&message={0}" /> </elmah>
依據上面的方式設定好後,只要 Elmah 接收到訊息就會同時發送到 hipchat 內,十分的方便!
- 如果您不了解如何申請 HipChat 的 API token 請參考下方[將 HipChat 當系統 LOG 使用]一文
- 如果你對於 Web.config 設定不熟的話,建議直接使用 NuGet 安裝 Elmah.mvc 所有設定位置都有了,只需要調整一下即可。
回應討論