Hammad Posted January 17, 2012 Posted January 17, 2012 Hi, I am trying to implement error and debug logging using FileWrite function by calling it from my logging functions. Although it is able to create a log file, I always find it empty for some reason. If I call FileWrite from my main script, it functions well. Can anyone help me out in this regard? Here is my code: This part is in a custom UDF file I include in my scripts. Func _DbgPrint($DbgMsg="undef",$FuncName="undef") if $DbgMsg = "undef" Then ConsoleWrite("Undefined Error!" & @CRLF) FileWrite($LogDir & $DbgLogFile,$scriptNameNoExt & ": Undefined Breakpoint!" & @CRLF) Else ConsoleWrite("in " & $FuncName & ": " & $DbgMsg & @CRLF) $filewritestatus=FileWrite($LogDir & $DbgLogFile,$scriptNameNoExt & ": in " & $FuncName & ": " & $DbgMsg & @CRLF) ConsoleWrite($filewritestatus&@CRLF) EndIf EndFunc Func _ErrorNQuit($ErrMsg="undef",$FuncName="undef") if $ErrMsg = "undef" Then ConsoleWrite("Undefined Error!" & @CRLF) FileWrite($LogDir & $LogFile,$scriptNameNoExt & ": Undefined Error!" & @CRLF) Else ConsoleWrite("in "& $FuncName & ": " & $ErrMsg & @CRLF) FileWrite($LogDir & $LogFile,$scriptNameNoExt & ": in" & $FuncName & ": " & $ErrMsg & @CRLF) EndIf ProcessClose($AppProcess) Call("_StopMSNetMonitor") Call("_unConfigDataPlane") Exit EndFunc This part is where I call these functions from my script: Call("_DbgPrint","hello","world") sleep(10000) All the variables have the expected values. FileWrite() also returns 1 (success) when it is run. If any more info is required, please let me know. Thanks.
Moderators Melba23 Posted January 17, 2012 Moderators Posted January 17, 2012 Hammad,If I call FileWrite from my main script, it functions well.That sounds like a scope problem. You are checking the data you are writing, have you also checked that the file path and name are correct within the function? Do $LogDir, $DbgLogFile and $LogFile have Global scope? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Hammad Posted January 17, 2012 Author Posted January 17, 2012 Melba,$LogDir, $DbgLogFile and $LogFile are defined with global scope in a separate myDEF.au3 file include at the start of myUDF.au3The fact that the file is created in the right directory with the right name is also a verfication of that. However, that file is empty at the end of the script runs, as well as just after the function is called (I pause the script to check that).
Moderators Melba23 Posted January 17, 2012 Moderators Posted January 17, 2012 Hammad, I thought that might be too easy a solution! Could you post the whole script and your own includes so I can take a look? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Hammad Posted January 17, 2012 Author Posted January 17, 2012 This is myDEF.au3 Global $opt_N="defaulttest" Global $opt_R="default" Global $TestCaseName=$opt_N Global $logDir="" Global $pcapDir="" Global $timeStamp= @MON & @MDAY & @YEAR &"-" & @HOUR & @MIN & @SEC Global $scriptNameNoExt=StringSplit(@ScriptName,".") Global $logFile=$scriptNameNoExt[1] & "-ERR" & ".txt" Global $DbgLogFile=$scriptNameNoExt[1] & "-DBG" & ".txt" Global $AppName="" Global $AppProcess="" Global $AppRuleName="unclassified" Global $PingInfraction=0 This is myUDF.au3 expandcollapse popup#include <array.au3> #include <myDEF.au3> Func _CreateFolder() If not FileExists($LogDir) Then ;DirRemove($logDir,1) DirCreate($LogDir) EndIf Func _ErrorNQuit($ErrMsg="undef",$FuncName="undef") if $ErrMsg = "undef" Then ConsoleWrite("Undefined Error!" & @CRLF) FileWrite($LogDir & $LogFile,$scriptNameNoExt & ": Undefined Error!" & @CRLF) Else ConsoleWrite("in "& $FuncName & ": " & $ErrMsg & @CRLF) FileWrite($LogDir & $LogFile,$scriptNameNoExt & ": in" & $FuncName & ": " & $ErrMsg & @CRLF) EndIf Exit EndFunc Func _DbgPrint($DbgMsg="undef",$FuncName="undef") if $DbgMsg = "undef" Then ConsoleWrite("Undefined Error!" & @CRLF) FileWrite($LogDir & $DbgLogFile,$scriptNameNoExt & ": Undefined Breakpoint!" & @CRLF) Else ConsoleWrite("in " & $FuncName & ": " & $DbgMsg & @CRLF) $filewritestatus=FileWrite($LogDir & $DbgLogFile,$scriptNameNoExt & ": in " & $FuncName & ": " & $DbgMsg & @CRLF) ConsoleWrite($filewritestatus&@CRLF) EndIf EndFunc Func _CommonStartup($FallbackBit=1) Call("_ReadCmdLineParams", ":N:R") $TestCaseName=$opt_N $Scenario=$opt_R $logDir= @ScriptDir & "..output" & $TestCaseName & "logs" $pcapDir=@ScriptDir & "..output" & $TestCaseName & "pcaps" & $AppRuleName & "" Call("_DbgPrint","starting connectivity test","_CommonStartup") AdlibRegister("_ConnectivityTest",60000) Call("_DbgPrint","creating output folders","_CommonStartup") Call("_CreateFolder") Call("_DbgPrint","moving mouse out of the way","_CommonStartup") MouseMove(0,0,5) ;avoid any mouse-over conflics Call("_DbgPrint","_CommonStartup completed successfully","_CommonStartup") EndFunc Func _CommonEnd() AdlibUnRegister("_ConnectivityTest") EndFunc Func _ConnectivityTest() If Not Ping("8.8.8.8") Then $PingInfraction=$PingInfraction+1 if $PingInfraction = 6 Then Call("_ErrorNQuit","Connectivity test failed","_ConnectivityTest") EndIf Else $PingInfraction=0 EndIf EndFunc And this is the script that I am writing using functions from myUDF: #include<myUDF.au3> Call("_CommonStartup",1) Call("_DbgPrint","hello","world") sleep(10000) Call("_CommonEnd")
water Posted January 17, 2012 Posted January 17, 2012 Are the two variables $LogDir & $LogFile set correctly? I mean has $LogDir a "" at the end or does $LogFile start with a ""? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Moderators Melba23 Posted January 17, 2012 Moderators Posted January 17, 2012 Hammad,You need to use $scriptNameNoExt[1] in functions _DbgPrint and _ErrorNQuit - at the moment you use the whole $scriptNameNoExt array and so Autoit refuses to print anything. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Hammad Posted January 17, 2012 Author Posted January 17, 2012 Thanks, Melba That took care of the problem. (stupid me)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now