Jump to content

AutoIt error logger (AUERLO) UDF 2.0.0

   (0 reviews)

About This File

File- and stdout/-err (console) output of messages, regular- and COM Object errors, exit method and -code, etc.

More ...

What's New in Version 2.0.0


v2.0.0 2019/06/19 Major (script-breaking changes).

  • Added "Windows Event Log" output type ($AUERLO_OPT_LOGWEL, $AUERLO_OPT_LVLWEL, $AUERLO_OPT_FNCWEL).
  • Added $AUERLO_OPT_STDCOLOR setting.
  • Added $AUERLO_ATR_FILENAME error item attribute.
  • Added _AUERLO_LogWinAPI() $bReset parameter.
  • Added _AUERLO_Assert() $sMessage parameter.
  • Removed _AUERLO_View() $sDelmCol parameter.
  • Renamed _AUERLO_Clear() to _AUERLO_FileClear().
  • Renamed _AUERLO_Read() to _AUERLO_FileRead().
  • Renamed "notify" output type to "prompt" ($AUERLO_OPT_...PROMPT now).
  • Renamed "alert" output type to "notify" ($AUERLO_OPT...NOTIFY now).
  • Renamed $AUERLO_OPT_FUNC... constants to $AUERLO_OPT_FNC... .
  • Renamed $AUERLO_ERR_FUNC... constants to $AUERLO_ERR_FNC... .
  • Changed default exit handler to report $AUERLO_LVL_INFO by default.
  • Changed _AUERLO_Read() parameter order.
  • Changed default error log (file) output format (contains @ScriptLineNumber's @ScriptFullPath now).
  • Changed default stdout (console) output format (contains @ScriptLineNumber's @ScriptFullPath now, omits @ScriptLineNumber and @ScriptFullPath if @compiled).
  • Changed au3.user.calltips.api and au3.UserUdfs.properties accordingly.
  • Changed $__g_aAUERLO_OptDef[$AUERLO_OPT__ENUM] and $__g_aAUERLO_OptCur[$AUERLO_OPT__ENUM] to $__g_aAUERLO_Opt[$AUERLO_SET__ENUM][$AUERLO_OPT__ENUM].
  • Various optimizations and consistency changes.

User Feedback

You may only provide a review once you have downloaded the file.

There are no reviews to display.

  • Similar Content

    • By user4157124
      File- and stdout/-err (console) output of messages, regular- and COM Object errors, exit method and -code, etc.
      Just call _AUERLO_Log() after to be logged functions (no parameters required if preceding function returns @error on failure). Or replace ConsoleWrite() (and SciTE trace lines) by _AUERLO_Log() for existing scripts. _AUERLO_FileRead() and _AUERLO_View() to display error log file contents (or import as CSV file to Microsoft Excel for example). Register custom functions to adjust date/time format and replace or add output functionality (no UDF source code modifications required). Output to: file console (stdout and stderr) non-blocking notification (Beep(), SoundPlay(), etc.) prompt (GUI dialog; script-halting notification) Microsoft Windows Event Log custom (register function) Download:
      AUERLO v2.0.0 Remarks:
      AutoIt v3.3.14.3+ required. @ScriptLineNumber = 0 if from callback (like $AUERLO_OPT_FUNCEXIT, except for $AUERLO_OPT_FUNCCOM = Default), -1 if @compiled. Generates Au3Stripper warnings (to be ignored without consequence; #AutoIt3Wrapper_Au3stripper_OnError=ForceUse -safe). agpl-3.0 auerlo.au3 :
      _AUERLO_Set() _AUERLO_Log() _AUERLO_LogAlt() _AUERLO_LogWinAPI() _AUERLO_LogEnv() _AUERLO_Assert() _AUERLO_FileClear() _AUERLO_FileRead() _AUERLO_View() auerloConstants.au3 :
      $AUERLO_LVL__ENUM - debug levels, $AUERLO_OPT__ENUM - _AUERLO_Set() options, $AUERLO_RET__ENUM - Return codes, $AUERLO_ERR__ENUM - @error codes, and $AUERLO_ATR__ENUM - error item attributes. Usage explanation:
      If @error signifies failure (implicit logging) : _ArrayDisplay($sNotAnArray); Returns @error = 1. _AUERLO_Log() ; Logs as $AUERLO_LVL_TRACE, $AUERLO_LVL_ERROR on @error, $AUERLO_LVL_DEBUG on @extended. If @error Then ... ; _AUERLO_Log() transparently passes @error and @extended from _ArrayDisplay(). If return value signifies failure (explicit logging) : If FileExists('invalid path') = 0 Then _AUERLO_Log('', $AUERLO_LVL_ERROR) Global $g_hFile = FileOpen('invalid path') If $g_hFile = -1 Then _AUERLO_Log('', $AUERLO_LVL_ERROR) If (return) value or expression result signifies failure (implicit logging): Global $g_hFile = FileOpen('invalid path') _AUERLO_Assert(Not ($g_hFile = -1)) ; $AUERLO_LVL_DEBUG if True (success), $AUERLO_LVL_WARNING if False. _AUERLO_Assert(FileWrite($g_hFile, 'data')); Successfull return value (1) evaluates to True; failure (0) to False. _AUERLO_Assert(IsArray($g_sNotAnArray)) Import error log file contents: Global $g_aArray2D = _AUERLO_FileRead(); Reads from current error log file. _AUERLO_View($g_aArray2D) Configuration ($AUERLO_OPT__ENUM in auerloConstants.au3 for description of all options) : _AUERLO_Set($AUERLO_OPT_LOGFILE, False) ; Disables output to error log file. _AUERLO_Set($AUERLO_OPT_LOGSTD, True) ; Enables output to stdout/stderr (console). _AUERLO_Set($AUERLO_OPT_FNCEXIT, Default) ; Registers default exit handler (no script exit logging without). _AUERLO_Set($AUERLO_OPT_FNCEXIT, Null) ; Deregisters default exit handler. _AUERLO_Set($AUERLO_OPT_FNCCOM, Default) ; Registers default COM Object error handler (no COM error logging without). _AUERLO_Set($AUERLO_OPT_FNCCOM, Null) ; Deregisters COM Object error handler. _AUERLO_Set($AUERLO_OPT_FNCCOM, YourFunc); Registers custom COM Object error handler YourFunc().  
    • By RC86
      Hi all,
      Bit of a fun one with querying WMI objects and setting errors within a function.  Below is example code that I've used from JSThePatriot previous UDFs but the example would apply to many other scenarios.  Basically the SetError should be called if $colItems is not an object as a result of the WMI query.  This is then used to create a corresponding error message.
      I've tried disabling WMIC thus forcing it to not be an object, but rather than catching the error and telling me about it, the code simply fails therefore surely making the purpose of the logging useless??  I've experienced this before but in other languages such as java i would use a try catch etc and get around this....any suggestions for its use in AutoIT?

      #region Header #comments-start Title: Computer Information Automation UDF Library for AutoIt3 - EXAMPLES Filename: CompInfoExamples.au3 Description: Examples using the UDF's from CompInfo.au3 Author: Jarvis J. Stubblefield (JSThePatriot) http://www.vortexrevolutions.com/ Version: 00.03.08 Last Update: 11.09.06 Requirements: AutoIt v3.2 +, Developed/Tested on WindowsXP Pro Service Pack 2 Notes: Errors associated with incorrect objects will be common user errors. AutoIt beta has added an ObjName() function that will be used to trap and report most of these errors. Special thanks to Firestorm (Testing, Use), Koala (Testing, Bug Fix), and everyone else that has helped in the creation of this Example File. #comments-end #endregion Header #region Global Variables and Constants If Not(IsDeclared("$cI_CompName")) Then Global $cI_CompName = @ComputerName EndIf Global Const $cI_VersionInfo = "00.03.08" Global Const $cI_aName = 0, _ $cI_aDesc = 4 Global $wbemFlagReturnImmediately = 0x10, _ ;DO NOT CHANGE $wbemFlagForwardOnly = 0x20 ;DO NOT CHANGE Global $ERR_NO_INFO = "Array contains no information", _ $ERR_NOT_OBJ = "$colItems isnt an object" #endregion Global Variables and Constants #Region Boot Configuration Dim $BootConfig _ComputerGetBootConfig($BootConfig) If @error Then $error = @error $extended = @extended Switch $extended Case 1 _ErrorMsg($ERR_NO_INFO) Case 2 _ErrorMsg($ERR_NOT_OBJ) EndSwitch EndIf For $i = 1 To $BootConfig[0][0] Step 1 MsgBox(0, "Test _ComputerGetBootConfig", "Name: " & $BootConfig[$i][0] & @CRLF & _ "Boot Directory: " & $BootConfig[$i][1] & @CRLF & _ "Configuration Path: " & $BootConfig[$i][2] & @CRLF & _ "Last Drive: " & $BootConfig[$i][3] & @CRLF & _ "Description: " & $BootConfig[$i][4] & @CRLF & _ "Scratch Directory: " & $BootConfig[$i][5] & @CRLF & _ "Setting ID: " & $BootConfig[$i][6] & @CRLF & _ "Temp Directory: " & $BootConfig[$i][7]) Next #endregion Boot Configuration #region ---- Internal Functions Func _ErrorMsg($message, $time = 0) MsgBox(48 + 262144, "Error!", $message, $time) ConsoleWrite("Error!" & $message & $time & @CRLF) EndFunc #endregion Internal Functions Func _ComputerGetBootConfig(ByRef $aBootConfigInfo) Local $colItems, $objWMIService, $objItem Dim $aBootConfigInfo[1][8], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_BootConfiguration", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems ReDim $aBootConfigInfo[UBound($aBootConfigInfo) + 1][8] $aBootConfigInfo[$i][0] = $objItem.Name $aBootConfigInfo[$i][1] = $objItem.BootDirectory $aBootConfigInfo[$i][2] = $objItem.ConfigurationPath $aBootConfigInfo[$i][3] = $objItem.LastDrive $aBootConfigInfo[$i][4] = $objItem.Description $aBootConfigInfo[$i][5] = $objItem.ScratchDirectory $aBootConfigInfo[$i][6] = $objItem.SettingID $aBootConfigInfo[$i][7] = $objItem.TempDirectory $i += 1 Next $aBootConfigInfo[0][0] = UBound($aBootConfigInfo) - 1 If $aBootConfigInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Else SetError(1, 2, 0) EndIf EndFunc ;_ComputerGetBootConfig  
    • By CartoonDragon
      I've run in to a problem with DriveMapAdd sometimes failing with the Error=1 Extended=0 and the drive not mapping.
      So to give the user a better error description i found the command  _WinAPI_FormatMessage which should give me wonderfull Windows messages, but it only returns a single letter.
      I found a wouldbe working code sniplet i could change to fit my needs, how ever it doesn't work for me as it is and even when i change it so that it doesn't produce errors it still doesn't work.
      It seems to have worked for the guy right here: '?do=embed' frameborder='0' data-embedContent>>
      #include <WinAPI.au3> $n = 53; Error code MsgBox(64, "Test", _WinAPI_GetErrorMessage($n)) Func _WinAPI_GetErrorMessage($iErrorNum) Local $tText $tText = DllStructCreate("char Text[4096]") _WinAPI_FormatMessage($__WINAPCONSTANT_FORMAT_MESSAGE_FROM_SYSTEM, 0, $iErrorNum, 0, DllStructGetPtr($tText), 4096, 0) Return DllStructGetData($tText, "Text") EndFunc ;==>_WinAPI_GetErrorMessage My attempt:
      #include <WinAPI.au3> Local Const $FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000 $n = 53; Error code MsgBox(64, "Test", _WinAPI_GetErrorMessage($n)) Func _WinAPI_GetErrorMessage($iErrorNum) Local $tText $tText = DllStructCreate("char Text[4096]") $ptext = DllStructGetPtr($tText) _WinAPI_FormatMessage($FORMAT_MESSAGE_FROM_SYSTEM, 0, $iErrorNum, 0, $ptext, 4096, 0) Return DllStructGetData($tText, "Text") EndFunc ;==>_WinAPI_GetErrorMessage Any help would be greatly apprisiated
  • Create New...