Complete example using custom errors and write errors to the Event logWriting to the Windows 2000 Event Log is a powerful feature of the ASP.NET and .NET framework. For those individuals who work in a large company and want to make track application errors, writing to the event log is a must! There wasn't any complete demos actually showing from A - Z how this was setup for the novice/common developer like me. Most novice developers need to be spoon fed how things are done the first time, once they see a simple example, they'll understand how the process works! This example is my reference how to make a complete application from A - Z setup and fail to understand how it works. |
| Step 1First of all the steps I followed was to create a simple web called eventlog. I also created the application rootso the global.asax file would fire.
Step 2I opened the global web.config file and turned on custom errors. Path to this is c:winntmicrosoft.netframework.. There are 3 choices available currently On, Off and RemoteOnly. From attending the conference, the recommended was RemoteOnly. This means anyone not on the console of the machine will see a friendly error and not the real thing. For this example I chose On. You also could leave the global web.config file custom errors turned off and configure at application level's web.config Either way works just fine.
web.config -- this file is placed in the root of the eventlog application root. <configuration> <system.web> <customErrors mode="On" defaultRedirect="/eventlog/customerrorpage.aspx"> <error statusCode="404" redirect="/eventlog/404Page.aspx"/> <error statusCode="403" redirect="/eventlog/403page.aspx"/> </customErrors> </system.web> </configuration> Step 3The next few items are just to create sample pages to make the application complete. I created a web.config, global.asax, Default.aspx page, and three sample error pages. 404page.aspx, 403page.aspx and customerrorpage.aspx page.
Here are those pages code for all pages. Global.asax Page - This uses the Application_OnError event to capture stuff if an error happens <%@ Import Namespace="System" %> <%@ Import Namespace="System.Diagnostics" %> <script language="VB" runat=server>
Public Sub Application_OnError(Sender as Object, E as EventArgs) 'Captures the error and converts to a string dim LastError as Exception = Server.GetLastError() Dim ErrMessage as String = LastError.toString()
Dim LogName As String = "MyLog" Dim Message As String = "Url " & Request.Path & " Error: " & ErrMessage
' Create Event Log if It Doesn't Exist If (Not EventLog.SourceExists(LogName)) Then EventLog.CreateEventSource(LogName, LogName) End if
Dim Log as New EventLog Log.Source = LogName
'These are the five options that will display a different icon. 'The numbers are just to show the order. These aren't required Log.WriteEntry(Message, EventLogEntryType.Information, 1) ' Log.WriteEntry(Message, EventLogEntryType.Error, 2) ' Log.WriteEntry(Message, EventLogEntryType.Warning, 3) ' Log.WriteEntry(Message, EventLogEntryType.SuccessAudit, 4) ' Log.WriteEntry(Message, EventLogEntryType.FailureAudit, 5) End Sub </script> Default.aspx page <% @Language="VB" %> <script language="VB" runat=server> Sub Page_Load(Sender As Object, E As EventArgs) If IsPostBack Then 'Declare all variables dim x as integer dim y as integer dim z as integer
'set x and y to values to be divided by zero x = 1 y = 0
'perform the division by zero to raise the error z = x/y End Sub </script> <html> <head> </head> <body> <form method="post" action="eventlog.aspx" name="form1" id="number">
<asp:Button id="abutton" type="submit" text="Click Me to generate an error" runat="server" /> </form> </body> </html> Customerrorpage.aspx <html> <head></head> <body> <h1>custom error page</h1> </body> </html>
404page.aspx --Capture all 404(Not Found pages) <html> <head></head> <body> <h1>404 error page</h1> </body> </html>
403page.aspx --Capture all 403(Restricted pages) <html> <head></head> <body> <h1>403 error page</h1> </body> </html> Step 4After all webs are created, web.config files in place. It was time to test out the application to see if it works. Type in http://localhost/eventlog/default.aspx file, this will display a button. Click it and see if this actually creates the log and writes the information to the event log. Actually only the custom error page will be displayed, the eventlog.aspx page will error and be transfered to the customerrorpage.aspx. The URL will be something like this.
http://localhost/eventlog/customerrorpage.aspx?aspxerrorpath=/eventlog/eventlog.aspx The page will appear like this Step 5. Verify the log was created and entry was placed in that log. The example shows a Critical error message. You also can show informational or yellow warning messages. For this example we showed all 5 possible entries
Open the Error and view the message. If the customerror wasn't turned on, this error would have shown up in the browser instead of the eventlog. Not pretty!!
Thats it! This was a high-level example with examples but hopefully helps in understanding how a sample application and using the new Error-handling features of ASP.NET... Enjoy!!
Parameters for WriteEntry Method- source
- The source by which the application is registered on the specified computer.
- message
- The string to write to the event log.
- type
- One of the EventLogEntryType values.
- eventID
- The application-specific identifier for the event.
- category
- The application-specific subcategory associated with the message.
- rawData
- An array of bytes that holds the binary data associated with the entry.
Five possible types of Event log messages. These show the different types of icons | Member Name | Description |
|---|
| Error | An error event. This indicates a significant problem the user should know about; usually a loss of functionality or data. | | FailureAudit | A failure audit event. This indicates a security event that occurs when an audited access attempt fails; for example, a failed attempt to open a file. | | Information | An information event. This indicates a significant, successful operation. | | SuccessAudit | A success audit event. This indicates a security event that occurs when an audited access attempt is successful; for example, logging on successfully. | | Warning | A warning event. This indicates a problem that is not immediately significant, but that may signify conditions that could cause future problems. | |
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
More ASP.NET Articles More By aspfree developerWorks - FREE Tools! | Join this webcast, to learn how the Rational Process Library can help with compliance issues, drive process improvement, and assist in service-oriented architecture (SOA) or Agile development. We will take a peek into the Rational Process Library with content around software and systems engineering (including RUP), operations and systems management, program and portfolio management, and asset and SOA governance. FREE! Go There Now!
| | | | Attend this launch webcast with Scott Hebner, Vice President of IBM Rational Marketing and Strategy, for an overview of Rational’s new software offerings and resources to help modernize and accelerate software innovation on i on Power Systems – while ensuring past application investments are protected and continue to grow. Learn how these solutions are helping customers extend their core i5/OS solutions toward modern architectures such as SOA and web technologies to deliver business improvements that stand the test of time. FREE! Go There Now!
| | | | WebSphere Process Server delivers a unique integration framework that simplifies existing IT resources. Often, as IT assets grow to support business demand, so too does their complexity and manageability. In this webcast, we’ll discuss how WebSphere Process Server helps deliver an SOA infrastructure that provides a common model to orchestrate, mediate, connect, map, and execute the underlying IT functions. Discover how WebSphere Process Server simplifies integration of business processes by leveraging existing IT assets as reusable services without the complexities of traditional integration methodologies. FREE! Go There Now!
| | | | Ken Krugler, co-founder of code search company Krugle, and Laura Merling, vice president of Marketing and Business Development for Krugle, join to talk about the ins and outs of code search and what it means as a new feature for developerWorks users. FREE! Go There Now!
| | | | This whitepaper provides areas to consider when evaluating any software configuration management solution. It addresses how the IBM solutions (Rational ClearCase and Rational ClearQuest) meet the needs and requirements of both project leaders and developers to provide successful Software Change and Configuration Management. FREE! Go There Now!
| | | | Informix Dynamic Server (IDS) Express Edition offers outstanding online transaction processing (OLTP) database performance, while helping to simplify and automate many of the tasks associated with deploying databases for small business applications. IDS 11 further extends the ease of management and applications integration with the Admin API and Scheduler, high availability with Continuous Log Restore for backup server recovery in case of a primary server failure, and column level encryption to protect personal and company private data. FREE! Go There Now!
| | | | In this webcast, IBM Rational will discuss the importance of Web application security and will share techniques and best practices to introduce application security testing into current QA processes including: understanding common security vulnerabilities and techniques to integrate security testing with defect tracking and remediation systems in an effort to safeguard sensitive online information. FREE! Go There Now!
| | | | The discipline of assembling and delivering software is maturing beyond standard developer-centric compile/test software builds. The end-to-end software development lifecycle is emerging as the new focus moves “Beyond the Build.” Join this on demand webcast to learn about methods for streamlining software delivery and key capabilities of the IBM Rational Build Forge framework for automating build and release management in environments of any size. FREE! Go There Now!
| | | | Explore how Rational and WebSphere software enable enterprise documentation in SOA environments. Specifically, a new integration between IBM WebSphere® Business Modeler and IBM Rational® Method Composer software can help technical writers more easily keep enterprise operations manuals in sync with changes that are made to business processes, resulting in more accurate and timely documentation that benefits the entire enterprise. FREE! Go There Now!
| | | | With IBM Rational Systems Development Solution, you can deliver products faster with higher quality. Within this kit, Read the “Model Driven Systems Development” white paper to see how to improve product quality and communication. Then check out the rest of the e-Kit to learn more about important topics that can affect the success of any software project through customer examples, tutorials, informative Webcasts, and best practices for designing, building and managing systems. From start to finish, at every stage in your projects, Rational Systems Development Solution can help your company reach its full potential. FREE! Go There Now!
| | | | All FREE IBM® developerWorks Tools! | |