用C#(或java)实现日志查看器GUI
我正在编写一个软件组件,动态显示某个日志文件的内容。想想增强的tail -f
。它应该是更大GUI的一部分
我想知道我应该选择哪个GUI组件来实现可滚动的文本区域,它应该显示日志文件输出
我的三个主要要求是:
- 搜索-让用户在日志输出中查找单词。我要强调的是,搜索不能通过过滤器实现。我想跳转到日志文件中包含
foo
的a单元,而不隐藏其不包含foo
的邻居,这与过滤不同李>- 复制-它应该能够轻松地选择和复制行(这就是为什么我排除了基于DataGrid的解决方案)李>
- 过滤器-它应该使我能够隐藏某些行容易李>
- 颜色-有时能够使用某些颜色(基于过滤器)会很好
如果组件遵循MVC模式也很好
当然,使用常规的只读文本区实现所有这些功能是可能的,但我想知道是否有更简单的方法。这里唯一不寻常的功能是过滤,毕竟在我看来,搜索文本区域是一个常见的需求
Java GUI解决方案也可以接受(它也可以用于Java应用程序)
BareTail与我正在寻找的类似,但不幸的是,它不能作为组件使用
# 1 楼答案
ObjectListView(围绕.NET WinForms ListView的开源包装器)执行前缀搜索和即时复制(以及许多其他整洁的事情)
您可以轻松地使用RowFormatter为特定行指定颜色
如果使用虚拟列表版本,也可以轻松实现过滤。我用它来过滤100000多个项目的列表,性能很好(在我的中端笔记本电脑上)
全文搜索必须具体实施。有一些钩子可以通过键入事件进行搜索
所有这些都是假设您有某种合理的LogEntry类型的模型对象要显示。如果你只有一系列的文字,那你就只能靠自己了:)
# 2 楼答案
创建此类GUI的关键概念:
你想要点什么吗。它不是完全开源的,但我可以自由分享它的一些特性
# 3 楼答案
只需在中使用RichTextBox。净/成本#
# 4 楼答案
这是一个很好的WPF入门项目,我有,它做突出显示,动态日志文件加载和基本搜索。在过去,我发现仅仅为了搜索日志文件而维护全文索引代价太高
http://code.google.com/p/videobrowser/source/browse/#svn/trunk/LogViewer
为了显示日志消息,我使用了一个WPF列表视图,它是完全虚拟的,支持您的所有需求
# 5 楼答案
EclipseUI框架包含这样一个控制台,您可以通过文本搜索、语法突出显示等改进它。然而,我认为你需要的最小RCP插件对你的需求来说太多了
然而,如果您已经基于Eclipse,这将是一个很好的解决方案
# 6 楼答案
为了实现精确的过滤,我认为你应该重新考虑把这些行组织成“列”,至少在引擎盖下面。对于我来说,显示这些专栏的直观用户界面似乎也是正确的。对于颜色来说,这应该没有什么区别
从网格复制行应该很容易实现,一旦有了一些多行选择可用,用某种ToString方法将记录转换回“原始”文本行应该比其他方法容易得多
因此,我认为你真的应该使用网格方法。如果是Xceed、Infrastics、其他供应商或内置的。NET数据网格。。。这是另一个问题