Что нового

Создание текстовых лог-файлов

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
AutoIt: 3.3.6.1
Версия: 1.0

Категория: Автоматизация

Описание: Библиотека позволяет создавать текстовые лог-файлы (.log), которые имеют сдедующий формат (см. ниже). Пользоваться всем этим экстремально просто (см. пример). Вообщем, даже и сказать больше нечего, попробуйте сами.

:smile:

Код:
###Event Log Files UDF Exaple###

2010-08-29  20:26:44  (0006)  Program start
2010-08-29  20:26:44  (0008)  Pinging www.autoitscript.com...
2010-08-29  20:26:44  (0005)  Ping is successful, Time = 73 ms
2010-08-29  20:26:44  (0007)  Program exit

2010-08-29  20:26:44  (0006)  Program start
2010-08-29  20:26:44  (0008)  Pinging www.autoitscript.com...
2010-08-29  20:26:44  (0005)  Ping is successful, Time = 110 ms
2010-08-29  20:26:44  (0007)  Program exit
Пример:
Код:
#Include <Log.au3>

Opt('MustDeclareVars', 1)

Global $hLog, $Time

$hLog = _Log_Open(@ScriptDir & '\MyProg.log', '###Event Log Files UDF Exaple###')
_Log_Report($hLog, 'Program start', 6)
_Log_Report($hLog, 'Pinging www.autoitscript.com...', 8)
$Time = Ping('www.autoitscript.com')
If $Time Then
    _Log_Report($hLog, 'Ping is successful, Time = ' & $Time & ' ms', 5)
Else
    Switch @error
        Case 1
            _Log_Report($hLog, 'Ping is fails, host is offline', 1)
        Case 2
            _Log_Report($hLog, 'Ping is fails, host is unreachable', 2)
        Case 3
            _Log_Report($hLog, 'Ping is fails, bad destination', 3)
        Case Else
            _Log_Report($hLog, 'Ping is fails, unknown error', 4)
    EndSwitch
EndIf
_Log_Report($hLog, 'Program exit', 7)
_Log_Close($hLog)

Источник: Log UDF (оффициальный форум)
Автор: Yashied
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
А зачем столько много кода да ещё и вызов DLL ?... я непонимаю
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Yashied
Как же ты любишь все усложнять :D
А так, полезная UDF :smile:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
FlatX007 сказал(а):
А зачем столько много кода да ещё и вызов DLL ?... я непонимаю
Medic84 сказал(а):
Как же ты любишь все усложнять :D
А так, полезная UDF :smile:
Друзья, если бы я хотел написать так:

Код:
_FileWriteLog('MyLog.log', 'Message')


Я бы это сделал и не парился бы с этим UDF (я не мозахист). Но помимо всех остальных плюшек, которые я реализовал в этом UDF, здесь есть один важный момент. На время работы с .log файлом, он блокируется для других приложений, т.е. доступен только для чтения. Его нельзя удалить, изменить и т.д., до тех пор, пока программа его не закроет, вызвав функцию _Log_Close(). Большинство серьезных приложений именно так и делает. А мы ведь здесь пишем именно такие?

:smile:
 

saavaage

Знающий
Сообщения
171
Репутация
17
Yashied, не подскажете, Ваша функция позволяет делать следующее:
1. делать лог-отчет по отработке сложного скрипта:
а) много подскриптов, привязанных к кнопкам, чекбоксам, прочим контролам, расположенным на разных вкладках и дочерних окнах;
б) в процессе выполнения операций идут записи в реестр системы, запуск/останов служб, удаление/создание файлов и т.д.
2. можно ли организовать включение ведение лога в утилите и отключение его по выбору пользователя, причем мониторинг действий пользователя происходит в автоматическом режиме.

Заранее благодарю за ответ.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Это не программа, а UDF библиотека, позволяющая пользователям гибко использовать ее функции под свои нужды. Просто пиши в любом месте кода следующее:

Код:
_Log_Report($hLog, 'Любой тест...')


и этот текст будет добавлен в .log файл. А что именно ты будешь писать, это уже твое дело. Также опционально можно задать код события и точное время (см. пример).
 

saavaage

Знающий
Сообщения
171
Репутация
17
Yashied, функция позволяет задать перечень контроллов и писать инфо с них в лог? т.е. не по отдельности обрабатывать каждый контрол, а указать их все вместе (м.б. в виде массива), чтобы при срабатывании того или иного подскрипта, если его контрол есть в списке, шла автоматом запись..

PS извини за сумбур, но сам еще не до конца сформулировал для себя задачи..
 
Сообщения
119
Репутация
-6
Yashied сказал(а):
На время работы с .log файлом, он блокируется для других приложений, т.е. доступен только для чтения. Его нельзя удалить, изменить и т.д., до тех пор, пока программа его не закроет, вызвав функцию _Log_Close(). Большинство серьезных приложений именно так и делает. А мы ведь здесь пишем именно такие?
А разве стандартны FileOpen позволяет в это время изменять файл?
Код:
If (@error) Or (Not $Ret[0])

Вроде без скобок тоже работает.
Код:
If IsString($sElement) and $sElement > 0 Then ; вчера написал
 
Верх