Hallo Leute,
Ich versuche eine Auswertung eines Logfiles eines Lizenzdienstes zu schreiben, der mir anzeigt, welcher User gerade die Lizenz verwendet.
Das Inputfile sieht folgendermaßen aus:
----------------------------------------
Timestamp: 01.12.2017 09:00:27.507
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:28.209
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:28.396
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:28.614
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:32.826
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:35.073
Message: LicenseLock, 1 Lizenzen ("DIRECTOR - User" "Kolben-Produktion@PCB12002:1") belegt.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:35.104
Message: LicenseLockChange, [12/15] "DIRECTOR - User"
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:41.796
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:41.937
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:21.613
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:40.053
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=4336) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:43.282
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=6704) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:44.265
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=3508) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:45.310
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=6744) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:45.341
Message: LicenseUnlock, 1 Lizenzen ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:45.372
Message: LicenseLockChange, [11/15] "DIRECTOR - User"
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:07:56.493
Message: LicenseLock, 1 Lizenzen ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") belegt.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:07:56.524
Message: LicenseLockChange, [12/15] "DIRECTOR - User"
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:08:00.736
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:12:26.141
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:12:28.325
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:12:43.301
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=3408) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:50.756
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=6348) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:54.671
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=2968) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:55.841
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=7032) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:55.841
Message: LicenseUnlock, 1 Lizenzen ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") freigegeben.
Category: General
----------------------------------------
Wie man sieht wird bei Message "LicenseLock" die Lizenz von einem User ausgecheckt und mit "LicenseUnlock" später wieder eingecheckt.
Was ich bis jetzt programmiert habe liefert mir folgendes Ergebnis:
LicenseUnlock, "usernameA@PCB17006:1")
LicenseUnlock, "xmsk-benutzer@PCK14048:1")
LicenseLock, "xmsk-benutzer@PCK13008:1")
LicenseUnlock, "xmsk-benutzer@PCK14045:5")
LicenseUnlock, "usernameB@PCB13003:1")
LicenseUnlock, "xmsk-benutzer@PCK14026:1")
LicenseUnlock, "user-wkzb@PCK14026:2")
Mir ist aber nicht klar wie ich den Usernamen sozusagen "Zustände" (Lizenz belegt/nicht belegt) zuweisen kann, sodass ich am Schluss nur noch User im Zustand "lizenz belegt" ausgespuckt bekomme.
Hier mein Code den ich bis jetzt habe:
Für ein paar Denkanstösse oder Hilfe wie man sowas angeht wäre ich sehr dankbar
Lg
Bernsi
Ich versuche eine Auswertung eines Logfiles eines Lizenzdienstes zu schreiben, der mir anzeigt, welcher User gerade die Lizenz verwendet.
Das Inputfile sieht folgendermaßen aus:
----------------------------------------
Timestamp: 01.12.2017 09:00:27.507
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:28.209
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:28.396
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:28.614
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:32.826
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:35.073
Message: LicenseLock, 1 Lizenzen ("DIRECTOR - User" "Kolben-Produktion@PCB12002:1") belegt.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:35.104
Message: LicenseLockChange, [12/15] "DIRECTOR - User"
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:41.796
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:00:41.937
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:21.613
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:40.053
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=4336) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:43.282
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=6704) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:44.265
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=3508) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:45.310
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=6744) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:45.341
Message: LicenseUnlock, 1 Lizenzen ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:06:45.372
Message: LicenseLockChange, [11/15] "DIRECTOR - User"
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:07:56.493
Message: LicenseLock, 1 Lizenzen ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") belegt.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:07:56.524
Message: LicenseLockChange, [12/15] "DIRECTOR - User"
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:08:00.736
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:12:26.141
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:12:28.325
Message: ProductCodeNotExist, Lizenz "2621959" ist nicht vorhanden.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:12:43.301
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=3408) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:50.756
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=6348) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:54.671
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=2968) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:55.841
Message: LicenseProcessIDUnlock, Lizenz ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") für Prozess (ID=7032) freigegeben.
Category: General
----------------------------------------
Timestamp: 01.12.2017 09:13:55.841
Message: LicenseUnlock, 1 Lizenzen ("DIRECTOR - User" "xmsk-benutzer@PCK13008:1") freigegeben.
Category: General
----------------------------------------
Wie man sieht wird bei Message "LicenseLock" die Lizenz von einem User ausgecheckt und mit "LicenseUnlock" später wieder eingecheckt.
Was ich bis jetzt programmiert habe liefert mir folgendes Ergebnis:
LicenseUnlock, "usernameA@PCB17006:1")
LicenseUnlock, "xmsk-benutzer@PCK14048:1")
LicenseLock, "xmsk-benutzer@PCK13008:1")
LicenseUnlock, "xmsk-benutzer@PCK14045:5")
LicenseUnlock, "usernameB@PCB13003:1")
LicenseUnlock, "xmsk-benutzer@PCK14026:1")
LicenseUnlock, "user-wkzb@PCK14026:2")
Mir ist aber nicht klar wie ich den Usernamen sozusagen "Zustände" (Lizenz belegt/nicht belegt) zuweisen kann, sodass ich am Schluss nur noch User im Zustand "lizenz belegt" ausgespuckt bekomme.
Hier mein Code den ich bis jetzt habe:
VB.NET-Quellcode
- Public Class Form1
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim module1(10, 10) As String
- Dim regdate As Date = Date.Now()
- Dim stringdate As String = regdate.ToString("dd.MM.yyyy")
- Dim username() As String
- Dim ausgecheckt As Boolean
- Dim i As Integer = 1
- Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("pfadzumlog.log")
- MyReader.TextFieldType = FileIO.FieldType.Delimited
- Dim currentRow As String
- While Not MyReader.EndOfData
- Try
- currentRow = MyReader.ReadLine
- i = i + 1
- If currentRow Like "*LicenseLock*(""DIRECTOR - User*" And i = 5 Then
- 'OutputTxt.AppendText(currentRow & "Unlock" & vbNewLine)
- 'Lesen der einzelnen felder
- Dim fields As String() = Nothing
- fields = currentRow.Split(CType(" ", Char()))
- Dim s As String
- Dim fieldcounter As Integer = 1
- For Each s In fields
- fieldcounter = fieldcounter + 1
- If fieldcounter = 3 Then
- OutputTxt.AppendText(s & " ")
- ElseIf fieldcounter = 10 Then
- fieldcounter = 1
- ElseIf fieldcounter = 9 Then
- OutputTxt.AppendText(s & vbNewLine)
- End If
- Next s
- ElseIf currentRow Like "*LicenseUnlock*(""DIRECTOR - User*" And i = 5 Then
- 'OutputTxt.AppendText(currentRow & "Unlock" & vbNewLine)
- 'Lesen der einzelnen felder
- Dim fields As String() = Nothing
- fields = currentRow.Split(CType(" ", Char()))
- Dim s As String
- Dim fieldcounter As Integer = 1
- For Each s In fields
- fieldcounter = fieldcounter + 1
- If fieldcounter = 3 Then
- ausgecheckt = 0
- OutputTxt.AppendText(s & " ")
- ElseIf fieldcounter = 10 Then
- fieldcounter = 1
- ElseIf fieldcounter = 9 Then
- OutputTxt.AppendText(s & vbNewLine)
- End If
- Next s
- 'wenn in Zeile 2 dann +1 ansonsten zurück auf 1
- ElseIf i = 6 Then
- i = 1
- End If
- Catch ex As Microsoft.VisualBasic.
- FileIO.MalformedLineException
- MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
- End Try
- End While
- End Using
- End Sub
- End Class
Für ein paar Denkanstösse oder Hilfe wie man sowas angeht wäre ich sehr dankbar
Lg
Bernsi