- Offizieller Beitrag
Hi,
Eine Mini-Funktion zum Logging, die so ähnlich aufgebaut ist wie in anderen Sprachen (Log-Level und Log-Targets).
Nutzung ist unter MIT-Lizenz erlaubt.
[autoit]; ##############################################################################
; Logging
; ##############################################################################
#include <Date.au3>
; Konstanten
Global Enum $LOG_ALL, $LOG_DEBUG, $LOG_WARN, $LOG_ERROR, $LOG_FIX
Global Enum $LOG_TARGET_CONSOLE, $LOG_TARGET_TRAYTIP, $LOG_TARGET_MSGBOX, $LOG_TARGET_FILE
; Default
Global $log_level = $LOG_ALL
Global $log_target = $LOG_TARGET_CONSOLE
Global $log_filename = ""
Global $log_enable_timing = True
Func _Log($msg_title, $msg = "", $level = $LOG_ERROR)
; Log-Level beachten
If $level < $log_level Then Return
Local $tCur = _Date_Time_GetLocalTime()
; Log-Typ beachten
Switch $log_target
Case $LOG_TARGET_CONSOLE
If $log_enable_timing Then
$msg_title = StringFormat("[%s] %s", _Date_Time_SystemTimeToDateTimeStr($tCur), $msg_title)
EndIf
If $msg = "" Then
ConsoleWrite(StringFormat("%s\n", $msg_title))
Else
ConsoleWrite(StringFormat("%s: %s\n", $msg_title, $msg))
EndIf
Case $LOG_TARGET_TRAYTIP
If $log_enable_timing Then
$msg_title = StringFormat("%s [%s]", $msg_title, _Date_Time_SystemTimeToDateTimeStr($tCur))
EndIf
TrayTip($msg_title, $msg, 20)
Case $LOG_TARGET_MSGBOX
If $log_enable_timing Then
$msg_title = StringFormat("%s [%s]", $msg_title, _Date_Time_SystemTimeToDateTimeStr($tCur))
EndIf
MsgBox(64 + 4096 + 262144, $msg_title, $msg)
Case $LOG_TARGET_FILE
If $log_enable_timing Then
$msg_title = StringFormat("[%s] %s", _Date_Time_SystemTimeToDateTimeStr($tCur), $msg_title)
EndIf
If $log_filename == "" Then
; Schreibrechte prüfen
Local $log_file_paths[3] = [@ScriptDir & "\lastrun.log", @UserProfileDir & "\lastrun.log", @TempDir & "\lastrun.log"]
For $i = 0 To UBound($log_file_paths) - 1
$log_filename = $log_file_paths[$i]
If FileWrite($log_filename, "") == 1 Then ExitLoop
Next
ConsoleWrite("Schreibe Log nach " & $log_filename & @CRLF)
FileDelete($log_filename)
EndIf
Local $f = FileOpen($log_filename, 1) ; Write mode (append to end of file)
If $f <> -1 Then
If $msg = "" Then
FileWrite($f, StringFormat("%s\n", $msg_title))
Else
FileWrite($f, StringFormat("%s: %s\n", $msg_title, $msg))
EndIf
EndIf
FileClose($f)
EndSwitch
EndFunc ;==>_Log
Edit 01.05.2012:
- Logging in Datei hinzugefügt
- Optionale Zeitstempel eingeführt
Johannes