Writing 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!Writing 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.[bold]Step 1[/bold]First of all the steps I followed was to create a simple web called eventlog. I also created the application root so the global.asax file would fire.Here is how to setup an application root:[bold]1.[/bold] Open Internet Service Manager MMC[italic](Start button, Control Panel, Administrative Tools, Internet Service Manager)[/italic][bold]2.[/bold] Located on the left side of the MMC, locate the Default Web and click the + buttonto expand the list of webs. [bold]3.[/bold] Right-click on the web your going to make an application root and choose properties.[bold]4.[/bold] Click the Create button.[bold]5.[/bold] After your done, the folder picture will appear like a box that is open. The application root is now created.[bold]Step 2[/bold]I opened the global web.config file and turned on custom errors. Path to this is c:\winnt\microsoft.net\framework\.. 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.[bold]web.config -- this file is placed in the root of the \eventlog application root.[/bold]
<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>
[bold]Step 3[/bold]The 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.[bold]Global.asax Page - This uses the Application_OnError event to capture stuff if an error happens[/bold]
<%@ 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>
[bold]Default.aspx page[/bold]
<% @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>
[bold]Customerrorpage.aspx[/bold]
<html> <head></head> <body> <h1>custom error page</h1> </body> </html>
[bold]404page.aspx --Capture all 404(Not Found pages)[/bold]
<html> <head></head> <body> <h1>404 error page</h1> </body> </html>
[bold]403page.aspx --Capture all 403(Restricted pages)[/bold]
<html> <head></head> <body> <h1>403 error page</h1> </body> </html>
[bold]Step 4[/bold]After 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 [bold]Step 5[/bold]Verify the log was created and entry was placed in that log.Below is five possible types of Event log messages:[bold]Error[/bold]An error event. This indicates a significant problem the user should know about; usually a loss of functionality or data.[bold]FailureAudit[/bold]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.[bold]Information[/bold]An information event. This indicates a significant, successful operation.[bold]SuccessAudit[/bold]A success audit event. This indicates a security event that occurs when an audited access attempt is successful; for example, logging on successfully.[bold]Warning[/bold]A warning event. This indicates a problem that is not immediately significant, but that may signify conditions that could cause future problems.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!! | 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 Code Articles More By aspfree developerWorks - FREE Tools! | Effective governance for lean development isn’t about command and control. Instead, the focus is on enabling the right behaviors and practices through collaborative and supportive techniques. Hear from Scott Ambler on how it is far more effective to motivate people to do the right thing than it is to force them to do so. Learn how to form a lightweight, collaboration-based framework that reflects the realities of modern IT organizations. FREE! Go There Now!
| | | | This whitepaper presents the benefits of successfully introducing static analysis into your organization using IBM Rational Software Analyzer. Additionally, it identifies some common pitfalls that can hinder the effective use of static analysis tooling as well as presents 10 simple strategies designed to help you quickly realize the value of static analysis using Rational Software Analyzer. FREE! Go There Now!
| | | | Visit IBM developerWorks to download a free trial version of WebSphere Business Modeler Advanced V6.1.1, IBM’s premier business process modeling and analysis tool for business users that offers process modeling, simulation, and analysis capabilities. IBM WebSphere Business Modeler helps you visualize, understand, and document business processes for continuous improvement. FREE! Go There Now!
| | | | IBM Enterprise Modernization solutions help organizations evolve core IT systems towards modern architectures and technologies—reducing the burden of maintenance and freeing up resources to develop new business requirements and capabilities. With the IBM Enterprise Modernization Sandbox for System z you can evaluate IBM Enterprise Modernization solutions focused on five key areas: Assets, Architectures, Skills, Processes and Infrastructures, and Investment. Each solution is based upon real customer experiences and offers a proven path to get you started with your modernization projects. FREE! Go There Now!
| | | | Secure your Web applications with IBM Rational AppScan Standard Edition V7.7, previously known as Watchfire AppScan. This Web application security testing tool automates vulnerability assessments and scans and tests for common Web application vulnerabilities. Visit IBM developerWorks to download a free trial of IBM Rational AppScan Standard Edition V7.7. FREE! Go There Now!
| | | | Learn how to implement a build management system that uses and extends your existing automation technologies. This tutorial shows, step-by-step, how to install and configure IBM Rational Build Forge to manage builds for Jakarta Tomcat from source code. FREE! Go There Now!
| | | | Get a free trial download of the latest version of IBM Rational Functional Tester V7.0.1. Rational Functional Tester is an automated functional and regression testing solution for QA teams concerned with the quality of their Java, Microsoft Visual Studio .NET, and Web-based applications. FREE! Go There Now!
| | | | As businesses grow increasingly dependent upon Web applications, these complex entities grow more difficult to secure. Most companies equip their Web sites with firewalls, Secure Sockets Layer (SSL), and network and host security, but the majority of attacks are on applications themselves – and these technologies cannot prevent them. This paper explains what you can do to help protect your organization, and it discusses an approach for improving your organization’s Web application security. FREE! Go There Now!
| | | | The Eclipse community is constantly working to extend Eclipse's functionality. In this webcast, learn about some of the most important and feature-rich projects under development. From multi-language support to plug-in development, tune in to see what Eclipse is capable of now. 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! | |