ASP.NETでトラップされていない例外をエラー出力する方法

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