|
Класс CLog - запись в журналКласс CLog преназначен для записи текста в файл журнала (log). Это может быть как отладочная информация, так и информация о ходе выполнения скрипта.Основные особенности класса CLog:
Методы и свойства класса
Пример 1: clog1.wsfСамый простой пример: создаем объект Log типа CLog; удаляем файл журнала, если он был (метод Clear); пишем в журнал строку (метод Write).<job id="CLog1"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.Clear Log.Write "Первая запись в журнал" Set Log = Nothing </script> </job> Пример 2: clog2.wsfВ этом примере мы поменяем путь к файлу журнала - он будет сохраняться в TEMP-каталоге.Обратите внимание на отсутствие метода Clear - в этом случае файл журнала не будет удаляться при каждом запуске скрипта. И еще - путь к TEMP-каталогу получается через объект FileSystemObject (свойство FSO), который используется классом CLog. <job id="CLog2"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.LogFullName = _ Log.FSO.GetSpecialFolder(2).Path & "\" & _ Log.ScriptName & ".log" Log.Write "Запись в журнал" Set Log = Nothing </script> </job> Пример 3: clog3.wsfЕще один простой пример - мы отменим запись текущего времени в начало строки и будем использовать формат Unicode.<job id="CLog3"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.IncludeTime = False Log.Format = -1 Log.Write "Запись в журнал" Set Log = Nothing </script> </job> Пример 4: clog4.wsfИ последний пример - после записи двух строк в журнал мы прочитаем его и выведем в диалоговом окне.<job id="CLog4"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.Write "Запись в журнал" Log.Write "Еще одна запись в журнал" MsgBox Log.ReadAll Set Log = Nothing </script> </job> А вот наконец собственно листинг класса CLog: Листинг: clog.vbs
Option Explicit
Class CLog
Private m_FSO
Private m_LogFullName
Private m_ScriptName
Private m_ScriptPath
Private m_Format
Private m_IncludeTime
Private Sub Class_Initialize
Set m_FSO = CreateObject("Scripting.FileSystemObject")
m_ScriptName = WScript.ScriptName
Dim I
I = InStrRev(m_ScriptName, ".")
If I > 0 Then m_ScriptName = Left(m_ScriptName, I - 1)
m_ScriptPath = WScript.ScriptFullName
I = InStrRev(m_ScriptPath, "\")
If I > 0 Then m_ScriptPath = Left(m_ScriptPath, I)
m_LogFullName = m_ScriptPath & m_ScriptName & ".log"
m_Format = 0 ' ANSI
m_IncludeTime = True
End Sub
Private Sub Class_Terminate
Set m_FSO = Nothing
End Sub
Property Get FSO
Set FSO = m_FSO
End Property
Property Let LogFullName(NewName)
m_LogFullName = NewName
End Property
Property Get LogFullName
LogFullName = m_LogFullName
End Property
Property Get ScriptPath
ScriptPath = m_ScriptPath
End Property
Property Get ScriptName
ScriptName = m_ScriptName
End Property
Property Let Format(NewFormat)
m_Format = NewFormat
End Property
Property Get Format
Format = m_Format
End Property
Property Let IncludeTime(NewValue)
m_IncludeTime = NewValue
End Property
Property Get IncludeTime
IncludeTime = m_IncludeTime
End Property
Function Write(Text)
On Error Resume Next ' for example if access is denied
Dim File
Set File = _
m_FSO.OpenTextFile(m_LogFullName, 8, True, m_Format)
Write = Err = 0
If Write Then
If m_IncludeTime Then Text = Now & " " & Text
File.Write Text & vbNewLine
File.Close
End If
Set File = Nothing
On Error GoTo 0
End Function
Function ReadAll
On Error Resume Next ' if file does not exist
Dim File
Set File = _
m_FSO.OpenTextFile(m_LogFullName, 1, False, m_Format)
If Err = 0 Then
ReadAll = File.ReadAll
File.Close
Else
ReadAll = ""
End If
Set File = Nothing
On Error GoTo 0
End Function
Function Clear
On Error Resume Next ' if file does not exist
m_FSO.DeleteFile m_LogFullName, True
Clear = Err = 0
On Error GoTo 0
End Function
End Class
|