Imports Raven.Client Public Class ErrorLogs Public Shared Sub NewLog(log As ErrorLog, userAgent As String) Dim el As ErrorLog = Nothing Dim isNewLog As Boolean = False Using ds As IDocumentSession = DataDocumentStore.Session 'el = ds.Query(Of ErrorLog)() _ ' .Where(Function(x) x.AbsoluteUri = log.AbsoluteUri AndAlso x.Message = log.Message).FirstOrDefault() el = ds.Query(Of ErrorLog)() _ .FirstOrDefault(Function(x) x.AbsoluteUri = log.AbsoluteUri AndAlso x.Message = log.Message) If el Is Nothing Then el = log el.Occurrences = New List(Of ErrorOccurrence)() ds.Store(el) isNewLog = True End If el.Occurrences.Add(New ErrorOccurrence() With { .UserAgent = userAgent }) ds.SaveChanges() End Using Dim pm As PushoverMessage If isNewLog = True Then pm = New PushoverMessage( String.Concat("Exception auf ", el.AbsoluteUri), String.Concat((String.Join(vbLf, el.Parameter)), vbLf, el.Message), el.Url, el.Url, True) Else pm = New PushoverMessage( String.Concat("Exception ", el.IdNumber, " auf ", el.AbsoluteUri), String.Concat("Wiederholter Fehler ", el.Occurrences.Count), el.Url, el.Url, True) End If PushoverManager.Send(pm) End Sub ''' ''' Lädt einen Log-Eintrag anhand seiner ID ''' ''' ''' Public Shared Function GetById(id As String) As ErrorLog Dim el As ErrorLog = Nothing Using session As IDocumentSession = DataDocumentStore.Session el = session.Load(Of ErrorLog)(id) End Using Return el End Function ''' ''' Gibt eine Liste aller Log-Einträge zurück ''' ''' Public Shared Function GetList() As List(Of ErrorLog) Dim lst As New List(Of ErrorLog)() Using session As IDocumentSession = DataDocumentStore.Session lst = session.Query(Of ErrorLog)().OrderByDescending(Function(x) x.Timestamp).ToList() End Using Return lst End Function End Class