|
Класс 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.vbsOption 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
|