| |
VB.NET - Ein- und UmsteigerSeparate Log-Klasse | | | Autor: Xcabur | Datum: 17.04.12 17:46 |
| Hallo zusammen
Ich brauch mal wieder ein paar Tipps. Ich möchte eine Klasse erstellen, welche das Log Management übernimmt. Dabei will ich nicht Ausnahmefehler behandeln, sondern eigens definierten Text in eine Log-Schreiben, welches als Protokoll zur Fehleranalyse dienen kann. Dazu habe ich nun folgende Klasse erstellt:
Imports System.IO
Public Class clsLog
Private strMessage As String
Private strPath As String
Private bolOverwriteLogfile As Boolean
Public Sub New(Optional ByVal Path As String = "log.txt", Optional ByVal _
OverwriteLogfile As Boolean = True)
Me.Path = Path
Me.OverwriteLogfile = OverwriteLogfile
End Sub
Public Sub Log(ByVal Message As String)
Dim objStreamWriter As StreamWriter
objStreamWriter = New StreamWriter(Me.Path, Me.OverwriteLogfile)
If Me.OverwriteLogfile = True Then Me.OverwriteLogfile = False
Debug.WriteLine(Message)
objStreamWriter.WriteLine(Message)
objStreamWriter.Close()
End Sub
Public Property Message() As String
Get
Return strMessage
End Get
Set(ByVal value As String)
strMessage = value
Log(Message)
End Set
End Property
Public Property Path() As String
Get
Return strPath
End Get
Set(ByVal value As String)
strPath = value
End Set
End Property
Public Property OverwriteLogfile() As Boolean
Get
Return bolOverwriteLogfile
End Get
Set(ByVal value As Boolean)
bolOverwriteLogfile = value
End Set
End Property
End Class Ich habe mir vorgestellt, dass ich in meiner Main-Form die Kalsse instanziere und so das Log füttern kann. Dies funktioniert soweit auch:
Public Class frmMain
Dim objLog As New clsLog()
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
objLog.Message = "Main Form Load"
End Sub
End Class Soweit funktioniert es auch.
Nun habe ich dass Problem, dass ich weitere Methoden der frmMain-Klasse aber auch Methoden anderer Klassen (clsFolder.GetSubFolders()) aufrufen. In diesen möchte ich ebenfalls Meldungen ins Protokoll schreiben. Ich habe gehoft, dass wenn ich das Property objLog.Message als ByRef an andere Methoden übergebe, dass dann beim setzen des Property dies sogleich in der clsLog ausgeführt wird. Dies funktioniert allerdings nur, wenn ich nur eine Nachricht ausgeben will, da das Set-Property erst beim Zurückspringen in das frmMain erfolgt.
Public Class frmMain
Dim objLog As New clsLog()
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
objLog.Message = "Main Form Load"
Dim arrSubFolders As New ArrayList
clsFolder.GetSubFolders(Path, arrSubFolders, objLog.Message)
End Sub
End Class
Public Class clsFolder
Public Shared Sub GetSubFolders(ByVal Path As String, ByRef SubFolders As _
ArrayList, ByRef Logmessage As String)
Logmessage = "Diese Nachricht erscheint nicht im Log"
Logmessage = "Aber die letzte Nachricht (letzter Wert der Variable)" & _
"erscheint im Log"
End Sub
End Class Natürlich könnte ich die clsLog.Log als Shared Function nutzen, allerdings möchte ich die clsFolder Klasse unabhängig halten, falls diese einmal in einem anderen Zusammenhang verwendet wird ohne, dass die clsLog zum Einsatz kommt.
Was gibt es da für Möglichkeiten? | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|