ASP.NETで最上位までいってもtry-catchで補足されない例外をログ出力するには、global.asaxを追加して、Application_Errorメソッドに出力処理を書く。
' global.asax Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) ' エラーの発生時に呼び出されます SysErrLogWrite() If TypeOf HttpContext.Current.Server.GetLastError() Is HttpRequestValidationException Then HttpContext.Current.ClearError() Response.Redirect("~/info_restricted_input.html") ' "<", ">" が使われていますエラーページ End If End Sub Private Sub SysErrLogWrite() Dim oContext As HttpContext = HttpContext.Current Dim sLogFile As String = ' エラー内容を取得 ( Not Found の場合、ログ出力はしない ) Dim oErr As Exception = oContext.Server.GetLastError() If TypeOf oErr Is HttpException AndAlso CType(oErr, HttpException).GetHttpCode() = 404 Then Return End If ' 取得されるエラーは HttpUnhandledException なので、実際に発生した内部エラーを取り出す If oErr.InnerException IsNot Nothing Then oErr = oErr.InnerException ' 出力メッセージ作成 Dim sLogMsg As String = "" sLogMsg &= "■ " sLogMsg &= DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") ' 出力日時 sLogMsg &= " [URL] " & oContext.Request.Url.OriginalString ' URL sLogMsg &= vbNewLine sLogMsg &= oErr.ToString() & vbNewLine sLogMsg &= "------------------------------------------------------------" ' ログファイル出力 Using oLogFile As New StreamWriter("C:\Log\SystemErr.log", True) oLogFile.WriteLine(sLogMsg) End Using End Sub