📄 filelogtracelistener.vb
字号:
stream.WriteLine(message) If m_AutoFlush Then stream.Flush() End Sub Private Function CheckSpace(ByVal msgSize As Integer) As Boolean If m_Stream.BaseStream.Length + msgSize > m_MaxFileSize Then If m_DiskSpaceExhaustedBehaviour = DiskSpaceExhaustedOption.ThrowException Then Throw New InvalidOperationException("Log file size exceeded maximum size") Else Return False End If End If If New System.IO.DriveInfo(Me.FullLogFileName(0)).TotalFreeSpace - msgSize < m_ReserveDiskSpace Then If m_DiskSpaceExhaustedBehaviour = DiskSpaceExhaustedOption.ThrowException Then Throw New InvalidOperationException("No more disk space for log file") Else Return False End If End If Return True End Function Private Function GetOpenStream() As System.IO.StreamWriter If m_Stream Is Nothing Then m_Stream = New System.IO.StreamWriter(FullLogFileName, m_Append, m_Encoding) End If Return m_Stream End Function#Region "Properties" Public Property Append() As Boolean Get Return m_Append End Get Set(ByVal value As Boolean) m_Append = value End Set End Property Public Property AutoFlush() As Boolean Get Return m_AutoFlush End Get Set(ByVal value As Boolean) m_AutoFlush = value End Set End Property Public Property BaseFileName() As String Get Return m_BaseFileName End Get Set(ByVal value As String) m_BaseFileName = value End Set End Property Public Property CustomLocation() As String Get Return m_CustomLocation End Get Set(ByVal value As String) m_CustomLocation = value End Set End Property Public Property Delimiter() As String Get Return m_Delimiter End Get Set(ByVal value As String) m_Delimiter = value End Set End Property Public Property DiskSpaceExhaustedBehavior() As DiskSpaceExhaustedOption Get Return m_DiskSpaceExhaustedBehaviour End Get Set(ByVal value As DiskSpaceExhaustedOption) m_DiskSpaceExhaustedBehaviour = value End Set End Property Public Property Encoding() As Encoding Get Return m_Encoding End Get Set(ByVal value As Encoding) m_Encoding = value End Set End Property Public ReadOnly Property FullLogFileName() As String Get Dim path As String Dim file As String#If TARGET_JVM = False Then 'Windows.Forms Not Supported by Grasshopper Select Case m_Location Case LogFileLocation.CommonApplicationDirectory path = System.Windows.Forms.Application.CommonAppDataPath Case LogFileLocation.Custom path = m_CustomLocation Case LogFileLocation.ExecutableDirectory path = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) Case LogFileLocation.LocalUserApplicationDirectory path = Microsoft.VisualBasic.FileIO.SpecialDirectories.CurrentUserApplicationData Case LogFileLocation.TempDirectory path = Microsoft.VisualBasic.FileIO.SpecialDirectories.Temp Case Else path = Microsoft.VisualBasic.FileIO.SpecialDirectories.CurrentUserApplicationData End Select#Else path = String.Empty#End If file = m_BaseFileName Select Case m_LogFileCreationSchedule Case LogFileCreationScheduleOption.Daily file = file & "-" & Date.Today.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) Case LogFileCreationScheduleOption.None 'nothing here Case LogFileCreationScheduleOption.Weekly Dim today As Date = Date.Today 'This is not culture-dependant, here Sunday is always the first day of the week file = file & "-" & today.AddDays(-today.DayOfWeek).ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) Case Else 'nothing here End Select Return System.IO.Path.Combine(path, file) & ".log" End Get End Property Public Property IncludeHostName() As Boolean Get Return m_IncludeHostName End Get Set(ByVal value As Boolean) m_IncludeHostName = value End Set End Property Public Property Location() As LogFileLocation Get Return m_Location End Get Set(ByVal value As LogFileLocation) m_Location = value End Set End Property Public Property LogFileCreationSchedule() As LogFileCreationScheduleOption Get Return m_LogFileCreationSchedule End Get Set(ByVal value As LogFileCreationScheduleOption) m_LogFileCreationSchedule = value End Set End Property Public Property MaxFileSize() As Long Get Return m_MaxFileSize End Get Set(ByVal value As Long) If value < 1000 Then Throw New ArgumentException("MaxFileSize has to be greater or equal to 1000") End If m_MaxFileSize = value End Set End Property Public Property ReserveDiskSpace() As Long Get Return m_ReserveDiskSpace End Get Set(ByVal value As Long) m_ReserveDiskSpace = value End Set End Property#End Region End ClassEnd Namespace#End If
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -