開発者以外のデザインパターンを作成しており、UnhandledExceptionイベントでcatchallエラーハンドラーを組み込んでいます。エラーをログファイルに書きたいのですが、ログファイル名にタイムスタンプが入っているので、実行するたびに変わります。ハンドラーがログファイル名の文字列を受信またはアクセスする方法はありますか?
助けてくれてありがとう
開発者以外のデザインパターンを作成しており、UnhandledExceptionイベントでcatchallエラーハンドラーを組み込んでいます。エラーをログファイルに書きたいのですが、ログファイル名にタイムスタンプが入っているので、実行するたびに変わります。ハンドラーがログファイル名の文字列を受信またはアクセスする方法はありますか?
助けてくれてありがとう
通常、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