Что нового

Запись выполнения в файл

Notum

Новичок
Сообщения
71
Репутация
0
Всем привет.

Хочу вести тщательный мониторинг выполнения скрипта. Возможно ли выводить все выполненные стройки в консоль ИЛИ записывать в txt файл выполненные стройки (или их номера)?

Заранее спасибо.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Если именно в файл. то http://autoit-script.ru/index.php?topic=2586.0
и через каждую строчку
Код:
_Log_Report($hLog, 'строчка #1', 1)

Сам пользуюсь примерно такой конструкцией:
Код:
AdlibRegister("status",10)
$status = ""
$all=1000
$i=0
While 1
$i+=1
$status = $i & " из " & $all
If $i>$all then ExitLoop
sleep(10)
WEnd

Func status()
	ToolTip("текущий статус $i= " & $status, 0,0)
EndFunc
 
Автор
N

Notum

Новичок
Сообщения
71
Репутация
0
Нашёл решение.

К дополнение к скрипту используется дополнительный. В основном скрипт добавляется строчка:
Код:
#AutoIt3Wrapper_Run_Debug_Mode=Y


Качаем AutoIt3Wrapper http://www.autoitscript.com/autoit3/scite/download/AutoIt3Wrapper.exe, кидаем в папку SCiTe и создаётся скрипт вот с таким содержанием:

Код:
#include <Constants.au3>

Local $foo = Run('"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\<....>\workspace.au3" /autoit3dir "C:\Program Files\AutoIt3" /UserParams', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

Local $line
While 1
    ProcessWaitClose($foo)
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
    
Wend

While 1
    ProcessWaitClose($foo)
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
Wend


MsgBox можно заменить на запись в файл.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Notum
Можно еще так попробовать:
Код:
For $i = 1 To 20
	If Mod($i, 2) Then
		_My_Log(@ScriptLineNumber - 1, 1)
	Else
		_My_Log(@ScriptLineNumber - 3)
	EndIf
Next

Func _My_Log($i_Number, $f_Flag = False)
	If Not @Compiled Then
		If $f_Flag Then
			FileWriteLine(@ScriptDir & '\log.txt', 'Строка ' & $i_Number & '---> OK')
			ConsoleWrite('Строка ' & $i_Number & '---> OK' & @CR)
		Else
			FileWriteLine(@ScriptDir & '\log.txt', 'Строка ' & $i_Number & '---> Error')
			ConsoleWrite('Строка ' & $i_Number & '---> Error' & @CR)
		EndIf
	Else
		FileWriteLine(@ScriptDir & '\log.txt', 'В скомпилированном скрипте не работает')
		ConsoleWrite('В скомпилированном скрипте не работает' & @CR)
	EndIf
EndFunc   ;==>_My_Log
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Хочу вести тщательный мониторинг выполнения скрипта.
Вообще - то в стандартной поставки Autoit 3.3.6.1 идет библиотека
Debug.au3. Посмотрите в справке пункт Debug Managment в разделе User UDF
 
Верх