0

さて、私は VB.NET で作業していて、手動でエラー ログをログ ファイルに書き込んでいます (そうです、私は呼び出しを行っていません)。ここで、ファイルが任意のサイズを超えている場合、関数が新しいエラー データを書き出すときに、新しいファイル名で新しいファイルを開始する必要があります。

関数は次のとおりです。

        Dim listener As New Logging.FileLogTraceListener
        listener.CustomLocation = System.Configuration.ConfigurationManager.AppSettings("LogDir")
        Dim loc As String = DateTime.UtcNow.Year.ToString + DateTime.UtcNow.Month.ToString + DateTime.UtcNow.Day.ToString + DateTime.UtcNow.Hour.ToString + DateTime.UtcNow.Minute.ToString

        listener.BaseFileName = loc

        Dim logFolder As String
        Dim source As String

        logFolder = ConfigurationManager.AppSettings("LogDir")
        If ex.Data.Item("Source") Is Nothing Then
            source = ex.Source
        Else
            source = ex.Data.Item("Source").ToString
        End If

        Dim errorFileInfo As New FileInfo(listener.FullLogFileName)

        Dim errorLengthInBytes As Long = errorFileInfo.Length


        If (errorLengthInBytes > CType(System.Configuration.ConfigurationManager.AppSettings("maxFileSizeInBytes"), Long)) Then

            listener.BaseFileName = listener.BaseFileName + "1"

        End If


        Dim msg As New System.Text.StringBuilder
        If String.IsNullOrEmpty(logFolder) Then logFolder = ConfigurationManager.AppSettings("LogDir")

        msg.Append(vbCrLf & "Exception" & vbCrLf)
        msg.Append(vbTab & String.Concat("App: AppMonitor | Time: ", Date.Now.ToString) & vbCrLf)
        msg.Append(vbTab & String.Concat("Source: ", source, " | Message: ", ex.Message) & vbCrLf)
        msg.Append(vbTab & "Stack: " & ex.StackTrace & vbCrLf)


        listener.Write(msg.ToString())
        listener.Flush()

        listener.Close()

テスト目的でこれをループで実行しているので、(たとえば) 10000 個のエラーが一度に発生した場合に何が起こるかを確認できます。繰り返しますが、これを体系的に処理するためのより良い方法があることは知っていますが、これは私が実装するように言われたコードでした.

上記のように、ログ ファイルに書き込む前にログ ファイルのサイズを確実に取得するにはどうすればよいですか?

4

1 に答える 1