This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vba:classes:log4vba [11.04.2017 16:37:23] yaslaw [Auslöser] |
vba:classes:log4vba [21.10.2019 12:10:41] (current) yaslaw |
||
---|---|---|---|
Line 1: | Line 1: | ||
<const> | <const> | ||
- | version=1.4.0 | + | version=1.5.6 |
- | vdate= 11.03.2017 | + | vdate= 21.10.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%% definiert. Sprich, wenn die Klasse direkt aufgerufen wird, dann wird diese Klasse ausgeführt. | + | singleton ist ab Version 1.5.0 keine eigene Funktion mehr. Ich 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> |