2009-07-15 6 views
4

Ich schreibe eine Softwarekomponente, die den Inhalt einer bestimmten Protokolldatei on-the-fly anzeigt. Denken Sie an verstärkte tail -f. Es sollte Teil einer größeren GUI sein.Implementieren einer Log Viewer-GUI mit C# (oder Java)

Ich habe mich gefragt, welche GUI componenet soll ich wählen die scrollbaren Textfeld zu implementieren, die die Protokolldatei Ausgabe angezeigt werden soll.

Drei meine wichtigsten Anforderungen sind:

  1. Search - lassen den Benutzer Wörter in der Protokollausgabe finden. Ich betone, dass Suche nicht durch Filter implementiert werden kann. Ich möchte zu der a-Zelle springen, die foo in der Protokolldatei ohne enthält, die seine Nachbarn versteckt, die nicht foo enthalten, anders als das Filtern.
  2. Kopieren - es sollte ermöglichen, Zeilen leicht auszuwählen und zu kopieren (deshalb habe ich DataGrid-basierte Lösungen ausgeschlossen).
  3. Filter - es sollte mir ermöglichen, bestimmte Zeilen leicht zu verstecken.
  4. Farben - wäre es schön, die Möglichkeit zu haben, bestimmte Farben manchmal (auf Filtern basieren) verwenden

Es wäre auch schön, wenn die Komponente der MVC-Muster gehorchen würde.

Natürlich ist es möglich, alle diejenigen mit regelmäßigem Nur-Lese-Textbereich zu implementieren, aber ich war wonderring wenn es etwas einfacher. Das einzige ungewöhnliche Feature hier ist das Filtern, schließlich scheint der gesamte durchsuchbare Textbereich eine allgemeine Anforderung zu sein.

Java GUI-Lösungen könnten auch akzeptiert werden (es könnte auch für eine Java-App verwendet werden).

BareTail ist ähnlich zu dem, was ich suche, aber es ist leider nicht lieferbar als Bestandteil.

Antwort

0

ObjectListView (ein Open-Source-Wrapper um .NET WinForms ListView) Präfix suchen und kopieren out of the box (plus viele andere nette Dinge).

Sie können einen RowFormatter verwenden, um bestimmte Zeilenfarben anzugeben.

Wenn Sie die Version der virtuellen Liste verwenden, können Sie die Filterung problemlos implementieren. Ich habe es verwendet, um Filter auf Listen von mehr als 100.000 Elementen anzuwenden und die Leistung ist in Ordnung (auf meinem Mittelklasse-Laptop).

Volltextsuche müsste speziell implementiert werden. Es gibt Hooks für die Suche nach Ereignissen.

All dies geht davon aus, dass Sie über ein sinnvolles LogEntry-Modell verfügen, das angezeigt werden soll. Wenn Sie nur eine Reihe von Zeilen Text haben, dann sind Sie auf eigene Faust :)

1

Die wichtigsten Konzepte für die Schaffung einer solchen GUI:

  • GlazedLists ist dein Freund
  • So JTable ist
  • Wenn Ihr Protokollformat/xml festgelegt ist, seine noch einfacher.

Wollen Sie etwas like this. Es ist nicht völlig Open Source, aber ich bin in der Lage, einige seiner Eigenschaften zu teilen.

+0

Ich denke, GlazedLists fehlt die Suchfunktion, auch bin ich mir nicht sicher, es ermöglicht das Kopieren und Einfügen leicht, aber es sieht gut aus. Vielen Dank. –

+0

Suche ist nur zu lokalisieren, wählen Sie und springen Sie zu dieser Zeile. – akarnokd

0

Die Eclipse-UI-Framework enthält eine solche Konsole, die Sie mit Textsuche, Syntaxhervorhebung und die solche verbessern können. Ich denke jedoch, dass die minimalen RCP-Plugins, die Sie benötigen, zu viel für Ihre Bedürfnisse wären.

Wenn Sie jedoch bereits auf Eclipse basieren, wäre es eine gute Lösung.

1

präzise Filterung zu aktivieren, ich glaube, Sie die Zeilen in „Spalten“ Strukturierung, zumindest unter der Haube überdenken sollen. Für eine intuitive UI, die diese Spalten anzeigt, scheint mir auch richtig zu sein. Für die Färbung sollte das keinen Unterschied machen.

Kopieren von Zeilen aus Grids sollte leicht zu erreichen sein, sobald Sie einige Zeilenauswahl zur Verfügung haben, sollte die Umwandlung von Daten in "rohe" Textzeilen in einer ToString-Methode viel einfacher als die andere sein um.

Daher denke ich, dass Sie wirklich mit einigen Grid-Ansatz gehen sollten. Wenn es Xceed, Infragistics, andere Anbieter oder das eingebaute .NET-Datagrid sein soll ... das ist eine andere Frage.

0

Verwenden Sie einfach ein RichTextBox in .NET/C#

+0

Ich bin froh, wenn Sie angeben, wie Sie meine Anforderungen mit diesen erreichen. Kopieren aus einem Raster erscheint mir nicht trivial. –

+0

Es ist nur eine Text-Viewer-Komponente, Sie entscheiden, was Sie dort eingeben, Sie können Zeilen im RTF-Format färben, es unterstützt Kopieren/Einfügen (wie Notepad), Sie können leicht in den Auswahlcode einhängen, wenn Sie müssen Wählen Sie nur ganze Zeilen mit einem Klick aus oder hängen Sie sie bei Bedarf in das Kopieren ein. – nos

0

ich ein einfaches Gitter würde vorschlagen, in .NET oder Java

+0

siehe oben Kommentar zu @noselasd –

1

Dies ist ein gutes WPF Starter Projekt, das ich habe, ist es nicht hervorheben, on the fly Laden der Protokolldatei und einfache Suche. In der Vergangenheit fand ich, dass die Pflege eines Volltextindex nur für die Protokolldateisuche zu teuer ist.

http://code.google.com/p/videobrowser/source/browse/#svn/trunk/LogViewer

Um die Log-Meldungen anzeigen ich eine WPF-Listview verwenden anzuzeigen, das komplett virtuell ist und unterstützt alle Ihre Anforderungen.

+0

1) Durchsuchen des gesamten Textes ist auch OK, es wäre nur ein paar Megabyte. 2) Ich werde es mir ansehen. Unterstützt es das Filtern und Suchen und Kopieren aus der Box? Oder muss ich etwas implementieren (dh, Strg + F auf ein Suchfeld haken und es in der Liste suchen lassen, Strg + C haken und die Auswahl zum Kopieren prüfen) Danke –

Verwandte Themen