Un sistema di tracing degli errori con Classic ASP: l'errore 500-100

di Daniele Bochicchio, in Classic ASP, Database, Coding,

Nello script #485 abbiamo cominciato la creazione del nostro sistema di tracing, tracciando tutti gli errori 400.
Continuiamo a costruire il sistema utilizzando una novità di ASP 3 (e quindi di Windows 2000 o superiore), ovvero l'errore 500-100.
Questo genere di errore si verifica ogniqualvolta uno script contiene un errore. Al pari del 400, è possibile specificare una pagina personalizzata, che nel nostro esempio utilizzeremo per completare il logging su database anche degli errori negli script.

<%

Function FixQuotes(stringa)
  FixQuotes = Replace(stringa, "'", "''")
End Function

' funzione per loggare su db
Sub Salva(tipo, pagina, referer)

  extra = "Form: " & Request.Form & VbCrLf
  extra = extra & "Querystring: " & Request.Querystring & VbCrLf

   set objError = Server.getLastError()
  extra = extra & "Codice ASP: " & objError.AspCode & VbCrLf
  extra = extra & "Categoria: " & objError.Category  & VbCrLf
  pagina = objError.File
   extra = extra & "Descrizione: " & objError.Description &_
     " " & ObjError.ASPDescription & VbCrLf
  extra = extra & "Codice: " &  Server.HTMLEncode(objError.Source) & VbCrLf
  extra = extra & "Linea: " &  ObjError.Line

   set objError = nothing

  ' query di inserimento nel database
  strSQL = "INSERT INTO LogsErrori (tipo, pagina, referer, IP, extra) "
  strSQL = strSQL & "VALUES ('" & tipo & "', '" & FixQuotes(pagina) & "', '" & FixQuotes(referer) & "', "
  strSQL = strSQL & "'" & FixQuotes(Request.ServerVariables("REMOTE_ADDR")) & "', "
  strSQL = strSQL & "'" & FixQuotes(extra) & "') "

  ' apertura db
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "stringadiconn"

  ' esecuzione query
  conn.Execute(strSQL)

  ' chiusura connessione
  conn.Close
  set conn = Nothing
end Sub

' raccolta informazioni
strRef = Request.ServerVariables("HTTP_REFERER")

' logga su db
call Salva("500-100", "", strRef)

' messaggio personalizzato di errore
Response.Write("Si è verificato un errore nei nostri script. Abbiamo registrato l'errore.")

%>

A questo punto ciò che manca è il pannello di controllo. E' facilmente implementabile attraverso questo script:
https://www.aspitalia.com/liste/usag/script.aspx?ID=372

Infine, per evitare che il nostro database diventi pieno, possiamo aggiungere alla funzionalità di logging una query che cancelli i record più vecchi di una settimana.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi