Quantcast
Channel: AutoIt v3 - General Help and Support
Viewing all articles
Browse latest Browse all 12506

sovled-ConsoleWrite abnormality (due to consolewriteerror)

$
0
0

I have a basic logging function, which when not compiled, also ouputs to scite via consolewrite (simplified the reproduction in the script below)

 

When the log is called with a failed step, I grab a screen shot of the active window, which somehow seems to cause scite to not 'get' the consolewrite until after the subsequent call to the same function...when I put in hard coded sleeps after the consolewrite, it works fine, but shouldn't a single threaded process not have this as a possibliity?

AutoIt         
#include <ScreenCapture.au3> $giSubFunctionCounter = 1 $giMaxLogLevel = 2 $gbDisplayMessage = False $gbDisplayInformMessage = False $gbTerminateOnFailure = False $giLogState_Fail = 0 $giLogState_Pass = 1 $giLogState_Info = 2 Var_SetLogAndActOnState3(0,1,"test","details") Var_SetLogAndActOnState3(1,1,"test","details") Func Var_SetLogAndActOnState3($iCallersStateToLog, $iCallersLogLevel, $sCallersLogCategoryName, $sCallersLogDetails, $bCallersShowUser=Default, $CallersbTerminateOnFailure=Default, $bCallersSaveScreenShotOnFailure=Default, $sCallersScriptAndDir=Default, $sCallersScriptLine=Default) ; Logging     If $iCallersLogLevel <= $giMaxLogLevel Then         If $bCallersShowUser=Default Then             $bCallersShowUser=$gbDisplayMessage             If $iCallersStateToLog=$giLogState_Info Then $bCallersShowUser=$gbDisplayInformMessage         EndIf         If $CallersbTerminateOnFailure=Default Then $CallersbTerminateOnFailure=$gbTerminateOnFailure         If $bCallersSaveScreenShotOnFailure=Default Then $bCallersSaveScreenShotOnFailure=True         If $sCallersScriptAndDir=Default Then $sCallersScriptAndDir=""         If $sCallersScriptLine=Default Then $sCallersScriptLine=""         Local $sLogLine, $sPrefix, $sIndentsSpacing, $iSpaces, $iYear=StringRight(@YEAR, 2), $sDateTime = @MON & "/" & @MDAY & "/" & $iYear & " " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC         Switch $iCallersStateToLog             Case $giLogState_Fail                 $sPrefix = " A E - "             Case $giLogState_Pass                 $sPrefix = " A W - "             Case $giLogState_Info                 $sPrefix = " A I - "             Case Else                 $sPrefix = " A E - "         EndSwitch         ; Open file for edits         $sCallersLogCategoryName &= ": "         ; Add a space for each $giSubFunctionCounter prior         $sIndentsSpacing = StringFormat("%" & $giSubFunctionCounter & "s", "")         $sCallersLogCategoryName = $sIndentsSpacing & $sCallersLogCategoryName         If $giSubFunctionCounter Then             $iSpaces = 37         Else             $iSpaces = 36         EndIf         ; Add a fixed amount of " " to end of string until len at least = $iSpaces (already appending 2 characters above)...improve readability of log file         $sCallersLogCategoryName = StringFormat("%-" & $iSpaces & "s", $sCallersLogCategoryName)         If $bCallersSaveScreenShotOnFailure And $iCallersStateToLog=$giLogState_Fail Then             Global $sScreenShotImgFile = @DesktopDir & "\" & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC & ".jpg"             $hwnd = WinGetHandle("[ACTIVE]")             If IsHWnd($hwnd) Then                 $aWinPos = WinGetPos($hwnd)                 If IsArray($aWinPos) Then                     If Int($aWinPos[2]) > 100 And Int($aWinPos[3]) > 100 Then                         _ScreenCapture_Capture($sScreenShotImgFile, Int($aWinPos[0]), Int($aWinPos[1]), Int($aWinPos[0]) + Int($aWinPos[2]), Int($aWinPos[1]) + Int($aWinPos[3]))                         $sCallersLogDetails = $sCallersLogDetails & "..Screenshot saved=[" & $sScreenShotImgFile & "]."                     Else                         $sCallersLogDetails = $sCallersLogDetails & "..Unable to save Screenshot=[ActiveWindowTooSmall]."                     EndIf                 Else                     $sCallersLogDetails = $sCallersLogDetails & "..Unable to save Screenshot=[FailedToGetWinPos]."                 EndIf             Else                 $sCallersLogDetails = $sCallersLogDetails & "..Unable to save Screenshot=[Can'tGetActiveWindowHandle]."             EndIf         EndIf         $sLogLine=$sDateTime & $sPrefix & $sCallersLogCategoryName & $sCallersLogDetails         ; Conditionally consolewrite         If Not @Compiled Then             If $iCallersStateToLog Then                 ConsoleWrite($sLogLine & @CRLF)             Else                 ConsoleWriteError($sLogLine & @CRLF)             EndIf             If StringLen($sCallersScriptAndDir) > 0 Then                 If StringLen($sCallersScriptLine) > 0 Then                     $sCallersScriptLine = "(" & $sCallersScriptLine & ",1)  : Navigate to script/line"                 Else                     $sCallersScriptLine = "(1,1)  : Navigate to script/line"                 EndIf                 ConsoleWrite($sCallersScriptAndDir & $sCallersScriptLine & @CRLF)             EndIf             If $bCallersSaveScreenShotOnFailure And $iCallersStateToLog=$giLogState_Fail Then ;~              Sleep(1000)             Else ;~              Sleep(10)             EndIf         EndIf     EndIf EndFunc   ;==>Var_SetLogAndActOnState

output (notice the time stamp of the first consolewrite is after the second):

08/01/13 14:28:26.177 A W -  test:                               details
08/01/13 14:28:26.038 A E -  test:                               details..Screenshot saved=[C:\Users\user\Desktop\20130801142826039.jpg].

 

edit...added a lot more calls, just to see the length of time diff:

AutoIt         
Var_SetLogAndActOnState3(1,1,"somelongfunctionname","START") Var_SetLogAndActOnState3(0,1,"somelongfunctionname","SCREENSHOT!") $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter) $giSubFunctionCounter += 1 Var_SetLogAndActOnState3(1,1,"somelongfunctionname","details" & $giSubFunctionCounter)

output:

Plain Text         
08/01/13 14:52:03.964 A W - somelongfunctionname:               START 08/01/13 14:52:04.079 A W -  somelongfunctionname:               details1 08/01/13 14:52:04.079 A W -   somelongfunctionname:              details2 08/01/13 14:52:04.079 A W -    somelongfunctionname:             details3 08/01/13 14:52:04.080 A W -     somelongfunctionname:            details4 08/01/13 14:52:04.080 A W -      somelongfunctionname:           details5 08/01/13 14:52:04.080 A W -       somelongfunctionname:          details6 08/01/13 14:52:04.080 A W -        somelongfunctionname:         details7 08/01/13 14:52:04.080 A W -         somelongfunctionname:        details8 08/01/13 14:52:04.081 A W -          somelongfunctionname:       details9 08/01/13 14:52:04.081 A W -           somelongfunctionname:      details10 08/01/13 14:52:04.081 A W -            somelongfunctionname:     details11 08/01/13 14:52:04.081 A W -             somelongfunctionname:    details12 08/01/13 14:52:04.082 A W -              somelongfunctionname:   details13 08/01/13 14:52:04.082 A W -               somelongfunctionname:  details14 08/01/13 14:52:04.082 A W -                somelongfunctionname: details15 08/01/13 14:52:03.964 A E - somelongfunctionname:               SCREENSHOT!..Screenshot saved=[C:\Users\user\Desktop\20130801145203965.jpg]. 08/01/13 14:52:04.082 A W -                 somelongfunctionname: details16 08/01/13 14:52:04.083 A W -                  somelongfunctionname: details17 08/01/13 14:52:04.083 A W -                   somelongfunctionname: details18 08/01/13 14:52:04.083 A W -                    somelongfunctionname: details19 08/01/13 14:52:04.083 A W -                     somelongfunctionname: details20 08/01/13 14:52:04.084 A W -                      somelongfunctionname: details21 08/01/13 14:52:04.084 A W -                       somelongfunctionname: details22 08/01/13 14:52:04.084 A W -                        somelongfunctionname: details23 08/01/13 14:52:04.084 A W -                         somelongfunctionname: details24 08/01/13 14:52:04.085 A W -                         test:        details

Got it...it's the difference between consolewrite and consolewriteerror...since I'm not compiling as a conole exe, made all consolerwrites...solved...but not sure why the two would be so different in output


Viewing all articles
Browse latest Browse all 12506

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>