我正在为非开发人员创建一个设计模式,并且我将一个catch all错误处理程序与UnhandledException事件结合在一起。我想将错误写入日志文件,但日志文件名中包含时间戳,因此每次运行时都会更改。我的处理程序有没有办法接收或访问日志文件名字符串?
感谢您的帮助
答案 0 :(得分:2)
通常,UnhandledException事件处理程序位于包含启动代码的类中。因此,没有什么可以阻止您在此类中定义包含日志文件名称的共享公共变量。您可以在启动时从配置文件中初始化其值。然后在事件内部可以使用该变量打开日志文件并写入您的信息
编辑:在你的场景中,你可以试试这个伪代码
Partial Friend Class MyApplication
' the name for the log file
Public logName As String
Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
Dim ex As Exception = e.Exception
If Not ex Is Nothing Then
MessageBox.Show(ex.Message)
Using sw = new StreamWriter(My.MyApplication.logName)
.....
End Using
End If
End Sub
End Class
并以初始形式添加此调用以定义logName
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
My.Application.logName = "C:\temp\text.txt"
' as test
Throw New Exception("This is an unhandled exception")
End Sub
End Sub