User Tools

Site Tools


vba:classes:log4vba

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
vba:classes:log4vba [11.04.2017 16:37:23]
yaslaw [Auslöser]
vba:classes:log4vba [04.09.2019 11:46:47]
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=1.4.0 +    version=1.5.4 
-    vdate= ​11.03.2017+    vdate= ​04.09.2019
     fname=log4vba.cls     fname=log4vba.cls
     ns=%NAMESPACE%     ns=%NAMESPACE%
Line 16: Line 16:
 {{%%fname%%|Download %%fname%% (V-%%version%%)}}</​WRAP>​ {{%%fname%%|Download %%fname%% (V-%%version%%)}}</​WRAP>​
  
-Mit dem Errohandling und Debug-Inrmationen ​in VBA ist es immer wieder mühsam, jedesmal alles auszuprogrammieren. Darum habe ich für mich diese Klasse geschrieben. Sie ist einfach zu implementieren und ermöglicht ein einheitliches Error-Handling über ein gesammtes Projekt.+Mit dem Errohandling und Debug-Informationen ​in VBA ist es immer wieder mühsam, jedesmal alles auszuprogrammieren. Darum habe ich für mich diese Klasse geschrieben. Sie ist einfach zu implementieren und ermöglicht ein einheitliches Error-Handling über ein gesammtes Projekt.
  
 ===== Definitionen ===== ===== Definitionen =====
Line 41: Line 41:
  
 ==== Creatoren ==== ==== Creatoren ====
-Es gibt verschiedene Möglichkeiten ein DateTime ​zu initialisieren+Es gibt verschiedene Möglichkeiten ein Log4vba ​zu initialisieren
 ^ Methode ^ Rückgabetyp ^ Beschreibung ^ ^ Methode ^ Rückgabetyp ^ Beschreibung ^
-| [[#​singleton]] | %%Log4vba%% | Erstellt und behält eine Instanz | 
 | [[#​instance]] | %%Log4vba%% | Erstellt eine neue Instance ​ | | [[#​instance]] | %%Log4vba%% | Erstellt eine neue Instance ​ |
 | [[#​startMethode]] | %%Log4vba%% | Erstellt ein Clone einer Instance und setzt die Methode fest | | [[#​startMethode]] | %%Log4vba%% | Erstellt ein Clone einer Instance und setzt die Methode fest |
Line 101: Line 100:
  
 ==== singleton() ==== ==== singleton() ====
-Dieser Creator ​ist als %%VB_UserMemId = 0%% definiertSprich, wenn die Klasse ​direkt aufgerufen wird, dann wird diese Klasse ausgeführt+singleton ​ist ab Version 1.5.keine eigene Funktion mehrIch habe festgestellt,​ dass VBA singleton unterstützt, wenn die Einstellung Attribute VB_PredeclaredId = True gesetzt ist. Und das ist bei dieser ​Klasse ​der Fall
-Der Singeton-Constructorgibt immer dieseleb Instanz von Log4vba zurück. + 
-<​code>​Log4vba.singleton([debugMode]) +Um auf die singelton zuzugreiffen,​ müssen die Klammern weggelassen werden
-Log4vba([debugMode])</code> +<​code>​Log4vba</​code>​
-<code vb>'/​** +
-' * Default. Handelt eine Singleton Instanz von Log4vba +
-' * @example ​   Log4vba().info "Hallo Welt"​ +
-' * @param ​ eLogType ​   Standard LogType +
-' * @return Log4vba +
-' */ +
-Public Function singleton(Optional ByVal iDebugMode = False) As Log4vba</​code>​+
  
 === Beispiel === === Beispiel ===
-<code vb>Log4vba().debugMode = True +<code vb>'Info mit ausgeben 
-debug.assert Log4vba().error (Err)</​code>​+log4vba.info "​Test",​ "​Immediate"​ 
 +02.05.2017 11:​31:​14 ​  ​INFO ​     Immediate - Test 
 + 
 +'​Ausgabe anpassen 
 +log4vba.typeSettings(ltInfo= eprOutConsole+eprFrmtNoSource 
 + 
 +'​Erneuter Test. Die Source wird nicht mehr ausgegeben 
 +log4vba.info "​Test",​ "​Immediate"​ 
 +02.05.2017 11:​32:​04 ​  ​INFO ​     Test 
 + 
 +'Debug ist normalerweise nicht eingeschaltet Darum keine Ausgabe 
 +log4vba.debugMsg "Debug Test"​ 
 + 
 +'Debug einschalten 
 +Log4vba.debugMode = True 
 + 
 +'Test wiederholen 
 +log4vba.debugMsg "Debug Test"​ 
 +02.05.2017 11:​33:​00 ​  ​DEBUG ​    Debug Test</​code>​
  
 ==== instance() ======= ==== instance() =======
Line 159: Line 169:
 ==== construct() ==== ==== construct() ====
 Iniitialisier ein bestehendes Objekt neu.  Iniitialisier ein bestehendes Objekt neu. 
-<​code>​object.construct([debugMode])+<​code>​object.construct([debugMode])</​code>​
 <code vb>'/​** <code vb>'/​**
 ' * Setzt Standardwerte für eine bestehende Instanz ' * Setzt Standardwerte für eine bestehende Instanz
Line 182: Line 192:
 False False
  
-'und jetzt mit No drücken ​(Also nicht in den Debug-Mode wechseln+'und jetzt mit No drücken. Ergo nicht in den Debug-Mode wechseln
 ? Log4vba().error("​Ich bin ein Fehler",​ vbObjectError) ? Log4vba().error("​Ich bin ein Fehler",​ vbObjectError)
 True</​code>​ True</​code>​
Line 218: Line 228:
 === Beispiel === === Beispiel ===
 Ein Beipiel in Direktfenster Ein Beipiel in Direktfenster
-<code vb>​Log4vba().debugMode = true +<code vb>​Log4vba.debugMode = true 
-Log4vba().debugValue "Mein Array",​ array("​Stefan",​ "​Erb",​ "​Winterthur"​)+Log4vba.debugValue "Mein Array",​ array("​Stefan",​ "​Erb",​ "​Winterthur"​)
 25.11.2016 10:​41:​07 ​  ​DEBUG ​    Mein Array: ['​Stefan','​Erb','​Winterthur'​]</​code>​ 25.11.2016 10:​41:​07 ​  ​DEBUG ​    Mein Array: ['​Stefan','​Erb','​Winterthur'​]</​code>​
 Die Ausgabe mit [[#​lib_printr_exists]] aktiviert und eprPrintR für ltDebug. Die Ausgabe mit [[#​lib_printr_exists]] aktiviert und eprPrintR für ltDebug.
-<code vb>​Log4vba().debugMode = true +<code vb>​Log4vba.debugMode = true 
-Log4vba().typeSettings(ltDebug) = eprConsole+eprPrintR ​ 'Ist als Standard bereits gesetzt. Ist hier nur zur Veranschaulichung +Log4vba.typeSettings(ltDebug) = eprConsole+eprPrintR ​ 'Ist als Standard bereits gesetzt. Ist hier nur zur Veranschaulichung 
-Log4vba().debugValue "Mein Array",​ array("​Stefan",​ "​Erb",​ "​Winterthur"​)+Log4vba.debugValue "Mein Array",​ array("​Stefan",​ "​Erb",​ "​Winterthur"​)
 25.11.2016 12:​44:​09 ​  ​DEBUG ​    Mein Array 25.11.2016 12:​44:​09 ​  ​DEBUG ​    Mein Array
                                 <​Variant()> ​ (                                 <​Variant()> ​ (
Line 235: Line 245:
 ==== info() ==== ==== info() ====
 Schreibt eine Information. Der Erste Paramter kann ein Text oder ein ErrObject sein Schreibt eine Information. Der Erste Paramter kann ein Text oder ein ErrObject sein
-<​code>​flag = Log4vba()info(Err)  +<​code>​flag = Log4vba.info(Err)  
-flag = Log4vba()info(Message [,​ErrorBumber [,Source [,​Array(Parameters) [,​Settings]]]])</​code>​+flag = Log4vba.info(Message [,​ErrorBumber [,Source [,​Array(Parameters) [,​Settings]]]])</​code>​
 <code vb>'/​** <code vb>'/​**
 ' * @param ​ ErrObject/​String ' * @param ​ ErrObject/​String
Line 272: Line 282:
     Exit Sub     Exit Sub
 Err_Handler:​ Err_Handler:​
-    Log4vba().info "Manelle ​Meldung",​ "​testLog4vba2()"​ +    Log4vba().info "Manuelle ​Meldung",​ "​testLog4vba2()"​ 
-    Debug.Assert Log4vba().info(Err, , "​testLog4vba2()",​ Array(iId, iArray))+    Debug.Assert Log4vba.info(Err,​ , "​testLog4vba2()",​ Array(iId, iArray))
 End Sub</​code>​ End Sub</​code>​
 <​code>​testLog4vba2 123, array("​Stefan",​ "​Erb",​ "​Winterthur"​) <​code>​testLog4vba2 123, array("​Stefan",​ "​Erb",​ "​Winterthur"​)
Line 310: Line 320:
 ==== Eigene Funktion ==== ==== Eigene Funktion ====
 //Nur in MS Access// //Nur in MS Access//
-\\ Man kann die Auswertung des Logs auch einer eigenen Funktion deligieren. Mit dem TypeSetting eprOutFunction wird das aktiviert. Dem Property functionName muss der loklae ​Funktionsname mitgegeben werden. Es muss eine Funktion und keine Sub sein, da hier mit eval() gearbeitet wird. Die Parameter der Funktion müssen so sein+\\ Man kann die Auswertung des Logs auch einer eigenen Funktion deligieren. Mit dem TypeSetting eprOutFunction wird das aktiviert. Dem Property functionName muss der lokale ​Funktionsname mitgegeben werden. Es muss eine Funktion und keine Sub sein, da hier mit eval() gearbeitet wird. Die Parameter der Funktion müssen so sein
 <code vb>​Public Function myLogFunction(ByVal iLogType As eLogType, ByVal iText As String)</​code>​ <code vb>​Public Function myLogFunction(ByVal iLogType As eLogType, ByVal iText As String)</​code>​
 Weiteres dazu im Beispiel [[#Loggen mit eigener Auswertung eprOutFunction]]. Weiteres dazu im Beispiel [[#Loggen mit eigener Auswertung eprOutFunction]].
Line 487: Line 497:
 ' */ ' */
 Public Function writeToConsole(ByVal iLogType As eLogType, ByVal iText As String) Public Function writeToConsole(ByVal iLogType As eLogType, ByVal iText As String)
-    If Not CurrentProject.AllForms("​FRM_SYS_CONSOLE"​).IsLoaded Then DoCmd.OpenForm ​C_CONSOLE+    If Not CurrentProject.AllForms("​FRM_SYS_CONSOLE"​).IsLoaded Then DoCmd.OpenForm ​"​FRM_SYS_CONSOLE"​
     Form_FRM_SYS_CONSOLE.log iText     Form_FRM_SYS_CONSOLE.log iText
 End Function</​code>​ End Function</​code>​
vba/classes/log4vba.txt · Last modified: 21.10.2019 12:10:41 by yaslaw