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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.