-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLoggers.bas
More file actions
87 lines (76 loc) · 3.71 KB
/
Loggers.bas
File metadata and controls
87 lines (76 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Attribute VB_Name = "Loggers"
Option Explicit
' =============================================================================
' Module: Logger
' Author: Mark Uildriks, codevba.com
' Description: Logger functions to simplify use of Logger. Also includes demo & test procedures
' Office version 2016 and higher
' Dependencies: None
' License: MIT License
' Version 1.0
' Repository: https://github.com/codevba-com/logger
' =============================================================================
Public Function MyLogger(Optional Restart As Boolean = False) As Logger
'Encapsulating the logger object in a function you can use the logger without worrying if it has been instantiated
'Using Static variable prevents the Logger variable from having to be intialized with each use
'Run 'MyLogger Restart:=True' in Immediate Window (Ctrl-G) to pick up changed properties
Static sLogger As Logger 'value survives between calls
If Restart Then Set sLogger = Nothing
If sLogger Is Nothing Then
Set sLogger = New Logger
'easily switch where to log
sLogger.SinkType = eSinkTypeImmediate
'sLogger.SinkType = eSinkTypeFile
'sLogger.SinkType = eSinkTypeAccessTable 'in MS Access only
'Not in MS Access only
'LogRecordFormat - default depends on SinkType
'sLogger.LogRecordFormat = eLogRecordFormatCompact
'sLogger.LogRecordFormat = eLogRecordFormatSimple
'sLogger.LogRecordFormat = eLogRecordFormatJson
End If
Set MyLogger = sLogger
End Function
Public Function LoggerFile() As Logger 'short version of MyLogger - using defaults
Static sLogger As Logger
If sLogger Is Nothing Then Set sLogger = New Logger: sLogger.SinkType = eSinkTypeFile
'sLogger.FilePath = "c:\temp\log.txt" 'default folder is next to the application document.
Set LoggerFile = sLogger
End Function
Public Function LoggerAccessTable() As Logger ' Only available in MS Access
Static sLogger As Logger
If sLogger Is Nothing Then Set sLogger = New Logger: sLogger.SinkType = eSinkTypeAccessTable
'sLogger.CreateLogTable 'default table tblLog created on first use
Set LoggerAccessTable = sLogger
End Function
Public Function LoggerImmediateWindow() As Logger
Static sLogger As Logger
If sLogger Is Nothing Then Set sLogger = New Logger: sLogger.SinkType = eSinkTypeImmediate
Set LoggerImmediateWindow = sLogger
End Function
Public Sub TestMyLogger()
MyLogger.Log Message:="Test Logger File Start", Level:=eLogLevelInfo, Source:="LogTests.TestLoggerFile"
MyLogger.Log Message:="Test Logger File End", Level:=eLogLevelInfo, Source:="LogTests.TestLoggerFile"
MyLogger.Log Message:="Test Logger File End", Level:=eLogLevelInfo, Source:=""
End Sub
'----DEMO & TESTS-------------
'Public Sub TestLoggerDefault()
''If you do not specify a SinkType, it uses the default, see meDefaultSinkType
' Set LoggerDefault = New Logger
' LoggerDefault.Log "Test Logger Default"
'End Sub
Public Sub TestLoggerImmediateWindow()
LoggerImmediateWindow.Log "Test Logger Immediate Window"
End Sub
Public Sub TestLoggerFile()
With LoggerFile
.SinkType = eSinkTypeFile
.Log Message:="Test Logger File Start", Level:=eLogLevelInfo, Source:="LogTests.TestLoggerFile"
.Log Message:="Test Logger File End", Level:=eLogLevelInfo, Source:="LogTests.TestLoggerFile"
End With
End Sub
Public Sub TestLoggerAccessTable() 'can only be used in MS Access
With LoggerAccessTable
.SinkType = eSinkTypeAccessTable
.Log "Test Logger Access Table", Level:=eLogLevelWarning, Source:="LogTests.TestLoggerAccessTable"
End With
End Sub