Health monitor is a system to monitor health of the application. It’s easy to add to your website and easy to use.
You can subscribe to some events occurred in the application, for example, “Error” and log it, or sent per email.
To add it you have to modify your web.config file, just add this lines of code in system.web section
<healthMonitoring enabled="true"> <eventMappings> <clear/> <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> </eventMappings> <providers> <clear/> <add name="mailWebEventProvider" type="System.Web.Management.SimpleMailWebEventProvider" from="name@test.com" to="name@test.com" buffer="false" subjectPrefix="An error occurred: "/> </providers> <rules> <clear/> <add name="Testing mail event provider" eventName="All Errors" provider="mailWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" custom=""/> </rules> </healthMonitoring>
And add in your system.net section this code
<mailSettings> <smtp deliveryMethod="Network" from="name@test.com"> <network host="mailhost" port="25" defaultCredentials="true"/> </smtp> </mailSettings>
The explanation what this code does is very simple, firstly, in eventMapping section you subscribes to some event occurred in the application. There are a great deal of event which you can subscribe, you can find info about they in MSDN documentation.
Than in providers section you need to define provider, it can be email, database or some other provider. In my example I am using email provider, so all messages will be sent per email.
And than in rules section you have to bind events to providers.
Because I am using email provider, I have to define mailSettings settings in system.net section.
And it’s all. Now after error messages you will get the text like this:
** Application Information **
—————Application domain: 8487b6cb-4-128819412246400827 Trust level: Full Application Virtual Path: /WebSite Application Path: C:\ProjectLocker\Trunk\LightCMS\WebSite\
Machine name: xxx
** Events **
—————Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 3/19/2009 4:00:29 PM
Event time (UTC): 3/19/2009 1:00:29 PM
Event ID: f6146a7781d34b9698cc5741b2aa75bd Event sequence: 15 Event occurrence: 1 Event detail code: 0
Process information:
Process ID: 2420Process name: WebDev.WebServer.EXE
Account name: xxx\xxx
Exception information:
Exception type: System.DivideByZeroExceptionException message: Attempted to divide by zero.
Request information:
Request URL: http://localhost:7323/WebSite/CssVariables.aspxRequest path: /WebSite/CssVariables.aspx
User host address: 127.0.0.1
User:
Is authenticated: False
Authentication Type:
Thread account name: xxx\xxx
Thread information:
Thread ID: 4Thread account name: xxx\xxx
Is impersonating: False
Stack trace: at CssVariables.Button1_Click(Object sender, EventArgs e) in c:\ProjectLocker\Trunk\LightCMS\WebSite\CssVariables.aspx.cs:line 18
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
