2008/03/06

手動製作vb.net Logger

VB.net
  1. Public Class Logger
  2.     Private Shared m_Path As String = "C:\log"
  3.     Private Shared buffer As New Queue(Of String())()
  4.     Private Shared lock As New Object()
  5.  
  6.     Public Shared Property Path() As String
  7.         Get
  8.             Return m_Path
  9.         End Get
  10.         Set(ByVal value As String)
  11.             m_Path = value
  12.         End Set
  13.     End Property
  14.  
  15.     Private Shared Sub EnsurePath()
  16.         Try
  17.             If Not System.IO.Directory.Exists(Logger.m_Path) Then
  18.                 System.IO.Directory.CreateDirectory(Logger.m_Path)
  19.             End If
  20.         Catch ex As Exception
  21.  
  22.         End Try
  23.     End Sub
  24.  
  25.     Public Shared Sub LogError(ByVal message As String)
  26.         Log("Error", message)
  27.     End Sub
  28.  
  29.     Public Shared Sub Log(ByVal message As String)
  30.         Log("Message", message)
  31.     End Sub
  32.  
  33.     Public Shared Sub Log(ByVal prefix As String, ByVal message As String)
  34.         Try
  35.             EnsurePath()
  36.             SyncLock lock
  37.                 buffer.Enqueue(New String() {prefix, message})
  38.                 While buffer.Count > 0
  39.                     Dim arr() As String = buffer.Peek()
  40.                     Dim p As String = arr(0)
  41.                     Dim c As String = arr(1)
  42.                     Dim filename As String = String.Format("{0}\{1}_{2}.log", m_Path, p, Now.ToString("yyyyMMdd"))
  43.                     Dim content As String = String.Format("{0}{1}{2}{3}", Now.ToString("HH:mm:ss.fff"), vbTab, c, vbCrLf)
  44.                     System.IO.File.AppendAllText(filename, content)
  45.                     buffer.Dequeue()
  46.                 End While
  47.             End SyncLock
  48.         Catch ex As Exception
  49.  
  50.         End Try
  51.     End Sub
  52. End Class

沒有留言: