Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Classic ASP : Capture Errors

Is it possible to capture all 500 errors in Classic ASP at a global level? Maybe something in IIS. I'm using II6 at the moment. I like to capture the error message and then store it in the database. I know its possible in ASPX pages, but don't know exactly how you do in classic asp.

Thank you

like image 672
MindGame Avatar asked Feb 13 '12 16:02

MindGame


2 Answers

Yes, create an asp page which will log the error details to the database, and set this to be the 500 handler page in IIS as below.

Use the Server.GetLastError object to get the details of the error in your handler script.

It might be a good idea to log to a text file rather than a DB in your 500 handler for resiliency.

Set Custom 500 Handler in IIS

like image 135
Jon Eastwood Avatar answered Sep 23 '22 20:09

Jon Eastwood


Complementing Jon's answer, use this script to write errors to a log file:

<%
'Set this page up in IIS to receive HTTP 500 errors
''Type' needs to be 'URL' and the URL is e.g.: '/500Error.asp' if this file is named '500Error.asp' and is in the site root directory.
'This script assumes there is a "/Log" folder, and that IIS has write access to it.
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

Dim objFSO, err
Set objFSO=CreateObject("Scripting.FileSystemObject")

Set err = Server.GetLastError()

outFile=Server.MapPath("/Log/ErrorLog.txt")
Set objFile = objFSO.OpenTextFile(outFile, ForAppending, True, TristateTrue)

objFile.WriteLine Now & " - ERROR - ASPCode:" & err.ASPCode & " ASPDescription: " & err.ASPDescription & " Category: " & err.Category & " Description: " & err.Description & " File: " & err.File & " Line: " & err.Line & " Source: " & err.Source  & vbCrLf
objFile.Close

Set objFile = Nothing
Set err = Nothing

%>
like image 33
saille Avatar answered Sep 25 '22 20:09

saille