Что нового

Есть ли лечге способ писать лог ?

tonycstech

Новичок
Сообщения
88
Репутация
1
Consolewrite это конечно хорошо но мне также надо и лог файл.
В основном я егу пишу так:
Код:
_log("хапёр-инвест")
Func _log($Log)
    FileWrite("Log.txt", @MON & "/" & @MDAY & "/" & @YEAR & "-" & @HOUR & ":" & @MIN & ":" & @SEC & @TAB & $Log & @CRLF)
EndFunc   ;==>_log

Таким образом в нужном мне месте я должен поставить либо ConsoleWrite либо _Log("сообщение") или оба сразу.

Есть ли какой другой метод который бе меня лишил нужды писать его почти в каждую 10ю строку как я это делаю до сих пор ?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,659
Репутация
2,457
Есть ли какой другой метод который бе меня лишил нужды писать его почти в каждую 10ю строку
Да, не писать его так часто.
Странный вообще вопрос, если есть необходимость записи в лог так часто, то чем мешает дополнительная запись?
 

Glass4217

Знающий
Сообщения
106
Репутация
12
Во время отладки я пользуюсь
Код:
ConsoleWrite

А когда все готово, и есть нужда писать логи, то в лог пишется только важная информация, например о завершении функции проверки с ошибкой, неправильный отклик от вебсервера или при выполнении трудоёмкого процесса.
Можно разбить логи, например об удачных выполнениях писать в один файл, о неудачных во второй, когда полный цикл задач выполнен в третий.
Лучшим решением будет на каждую функцию, всталять проверку ошибок выполнения, тогда отталкиваясь от этих данных вам будет куда как проще контролировать выполнение скрипта,
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,659
Репутация
2,457
Я обычно использую свою небольшую библиотек FileLog (прикрепил):
Код:
#include <GUIConstantsEx.au3>
#include 'FileLog.au3'

Global $hLog = _FileLog_Open(@ScriptDir & '\Events.log')

$hGUI = GUICreate('Log Demo', 300, 200)
_FileLog_Write($hLog, 'GUI created')

$iButton = GUICtrlCreateButton("Button", 20, 40, 60, 20)
_FileLog_Write($hLog, 'Button created')

GUISetState(@SW_SHOW, $hGUI)
_FileLog_Write($hLog, 'GUI shown')

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _FileLog_Write($hLog, 'Exit the program')
            _FileLog_Close($hLog)
            Exit
        Case $iButton
            _FileLog_Write($hLog, 'Button (' & $iButton & ') clicked')
    EndSwitch
WEnd

Результат в файле:
-------------- Example.au3 Log STARTED at 23.03.2021, 16:35:57 --------------
2021/03/23 16:35:57>> GUI created
2021/03/23 16:35:57>> Button created
2021/03/23 16:35:57>> GUI shown
2021/03/23 16:35:58>> Button (3) clicked
2021/03/23 16:36:01>> Exit the program
-------------- Example.au3 Log ENDED at 23.03.2021, 16:36:01 --------------
 

Вложения

  • FileLog.zip
    1.2 КБ · Просмотры: 1

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,659
Репутация
2,457
Есть ли какой другой метод который бе меня лишил нужды писать его
Возможно имеется в виду это:
Код:
_Log("хапёр-инвест", -1) ;Запись в консоль и в файл

;$iMode = -1 -> Write to console and to file
;$iMode = 0 -> Write to console
;$iMode = 1 -> Write to file
Func _Log($sLog, $iMode = -1)
    $sLog = @MON & "/" & @MDAY & "/" & @YEAR & "-" & @HOUR & ":" & @MIN & ":" & @SEC & @TAB & $sLog & @CRLF
    
    If $iMode <> 0 And $iMode <> 1 Then
        $iMode = -1
    EndIf
    
    Switch $iMode
        Case 0, -1
            ConsoleWrite($sLog)
            
            If $iMode = -1 Then
                ContinueCase
            EndIf
        Case 1
            FileWrite("Log.txt", $sLog)
    EndSwitch
EndFunc
 
Верх