如何处理错误记录例程中的异常?

时间:2013-08-13 20:01:15

标签: .net logging exception-handling error-handling error-logging

我正在编写一个错误日志记录例程,该例程将由多个WCF服务提供商(托管在后台Windows服务中)使用,以便他们可以记录他们捕获的任何异常。事情是,如果 是在我的日常工作中捕捉异常的人,我不知道该怎么办。

更具体地说,这是我当前的例程(在VB.Net中):

Public Shared Sub LogError(Text As String, Filename As String, PathLog As String)
    Try
        PathLog = Path.GetFullPath(PathLog)

        If Not Directory.Exists(PathLog) Then
            Directory.CreateDirectory(PathLog)
        End If

        Dim PathFile As String = Path.GetFullPath(PathLog & "\" & Filename)
        File.AppendAllText(PathFile, "[" & GetDateTimeWithMiliseconds() & "] " & vbNewLine & Text & vbNewLine)
    Catch ex As Exception
        'ToDo: WHAT TO DO?!
    End Try
End Sub

我意识到我应该单独捕捉可能的异常,而不是做一般的Try ... Catch。但我的观点是,一旦我抓住它们该怎么办?

  1. 我不能抛出一个MessageBox,因为它是一个Windows服务托管的WCF服务器(即使我可以,我也不应该)
  2. 我很可能无法记录错误,因为错误记录例程已经失败
  3. 我在堵塞

    P.S:外部日志解决方案是不可能的

1 个答案:

答案 0 :(得分:0)

这个世界上的每个节目都有一个点,你必须说,“我对此无能为力”。这就是你怎么说的:

 Try
 .....
 Catch
    ''Do Nothing
 End Try

因此,您可能希望写入有关特殊日志记录失败的事件日志。但是如果事件日志失败,你就什么也做不了,上面的代码就会解决这个问题。

在您的具体示例中,您应该在方法中使用锁,因为多个线程可能访问相同的代码并且文件可能被锁定,这将导致错误。

SyncLock lockObject
       '' your code
End SyncLock