Hallo zusammen,
Nach der Einladung von Tino freue ich mich, unser
Logging Tool SmartInspect hier im Forum vorstellen zu dürfen. Erst einmal kurz ein paar Worte über mein Unternehmen und mich. Zusammen mit meinem Bruder Tobias Gurock habe ich
Gurock Software Ende 2004 gegründet und Anfang 2005 mit SmartInspect unser erstes Produkt herausgebracht. Seitdem haben wir unter anderem ein
Blog gestartet,
DelphiFeeds.com gegründet und SmartInspect 2.0 veröffentlicht.
Über SmartInspect
Was genau ist SmartInspect? SmartInspect ist ein Logging Tool für .NET, Java und Delphi und erlaubt es Entwicklern, Probleme in ihren Applikationen zu finden, Produktionssysteme zu überwachen und bei Kundenproblemen schnell reagieren zu können und eine Lösung zu finden. Wie funktioniert das ganze? Es ist eigentlich ganz einfach: als Entwickler bindet man eine der drei SmartInspect Bibliotheken für .NET, Java und Delphi in seine Applikation ein und fügt Logging Aufrufe an alle Stellen bzw. in alle Teile der Applikation ein, die überwacht werden sollen. Dabei können neben einfachen Nachrichten auch Exceptions, Objekte, Dateien, Screenshots, Prozesse und Threads geloggt werden (und noch einiges mehr).
Für die verschiedenen Anwendungsfälle können die Logging Informationen über verschiedene Protokolle geloggt werden. Das wohl am meisten benutzte Protokoll ist hierbei das File Protokoll, mit dem Log Dateien in einem eigenen optimierten Binärformat gespeichert werden. Wie bei den anderen unterstützten Protokollen gibt es auch beim File Protokoll verschiedene Optionen um zum Beispiel die Größe der Log Dateien zu begrenzen oder auch stündlich/täglich etc. zu rotieren. Neben Log Dateien gibt es auch Protokolle für die live Übertragung per TCP/IP, Log Dateien im Textformat und ein Protokoll das die Informationen im RAM speichert und für die Zusammenarbeit mit Exception Reporting Tools wie EurekaLog konzipiert wurde.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Si.Connections := 'file(filename=c:\log.sil)'; Si.Enabled := True;
SiMain.LogMessage('Processing Order 48843'); SiMain.LogError('Connection refused while trying to connect!'); SiMain.LogException(E);
SiMain.EnterMethod(Self, 'Button1_Click'); SiMain.LeaveMethod(Self, 'Button1_Click');
SiMain.LogInteger('Index', Index); SiMain.LogObject('Order', Order); SiMain.LogDataSet('DataSet', DataSet); |
Wie werden die Logging Informationen ausgewertet? Zum Analysieren, Filtern und Durchsuchen von Log Dateien und zum live Überwachen von Applikationen gibt es die SmartInspect Console. Die SmartInspect Console bietet allerhand an Möglichkeiten die Daten auszuwerten. So gibt es zum Beispiel die Möglichkeit, eigene Views anzulegen die nur bestimmte Teile des Logs anzeigen. Über AutoView Rules ist es sogar möglich, automatisch neue Views für verschiedene Threads erstellen zu lassen. Dadurch kann einfach analysiert werden, was welcher Thread genau macht und es können so zum Beispiel Synchronisierungsfehler einfacher gefunden werden.
Mit der Console können neben den Log Entries selbst auch angehängte Informationen ausgewertet werden. So können zum Beispiel die Eigenschaften eines Objektes, Texte, Screenshots oder auch Speicherbereiche in einem HEX Viewer angezeigt werden.
Entwicklung des Produktes
Für viele Forumsteilnehmer ist es sicherlich interessant, wie wir SmartInspect entwickelt haben. Die einzelnen Logging Bibliotheken sind jeweils in den Sprachen für das jeweilige Entwicklungstool bzw. für die jeweilige Plattform entwickelt worden. Dies bedeutet, dass die Java Bibliothek in Java, die Delphi Bibliothek in Delphi und die .NET Bibliothek in C# entwickelt wurden. Da wir auch den Quelltext der Bibliotheken mitliefern und Kunden so weniger Deploy Probleme haben, war es auf jeden Fall die richtige Entscheidung die Bibliotheken in den jeweiligen Sprachen zu entwickeln, auch wenn es durchaus mehr Arbeit war und ist.
Die SmartInspect Console selbst haben wir in Delphi entwickelt. Die ersten Jahre haben wir dabei Delphi 7 verwendet. Wir haben die Console jedoch vor ca. einem Jahr auf Delphi 2006 portiert und wechseln zurzeit auf Delphi 2007. Für die Console haben wir einige Third-Party Komponenten verwendet, ohne die die Entwicklung deutlich aufwendiger gewesen wäre. Einige dieser Komponenten möchte ich nachfolgend auflisten, auch wenn sie vermutlich hier schon sehr gut bekannt sind:
- Die wichtigste Komponente für die Console ist vermutlich der VirtualTreeView. Wir verwenden diese Komponente wirklich für alles mögliche und gerade die Flexibilität, Geschwindigkeit und Unicode Unterstützung sind für uns sehr wichtig
- Für das Docking und die Toolbars nutzen wir die DevExpress ExpressBars. Da diese Komponenten leider weder den neuen Visual Studio Style noch Unicode unterstützen, mussten wir diese Komponenten stark umschreiben und erweitern, um Sie einsetzen zu können.
- Für den Binary Viewer benutzen wir die TMPHexEditor Komponente um die Binärinformationen in einer Hex Ansicht anzuzeigen. Ich kann die Komponente nur empfehlen, da sie uns einiges an Arbeit bzw. Zeit gespart hat
- Für den TCP/IP Server innerhalb der SmartInspect Console verwenden wir Indy. In der Delphi Bibliothek benutzen wir Indy zwar nicht (aus Deploy Gründen), aber für die Console war Indy genau die richtige Wahl und wir sind mit der Qualität der Indy Bibliothek sehr zufrieden
Wir haben noch einige weitere Third-Party Komponenten und Bibliotheken in der Console verwendet, aber diese alle hier aufzulisten würde zu weit führen.
Mehr Informationen
Für mehr Informationen über SmartInspect könnt ihr natürlich unsere
Webseite besuchen, die
Trial herunterladen, uns eine
E-Mail schreiben oder direkt hier fragen. Ich freue mich über euer Feedback!