有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用C#(或java)实现日志查看器GUI

我正在编写一个软件组件,动态显示某个日志文件的内容。想想增强的tail -f。它应该是更大GUI的一部分

我想知道我应该选择哪个GUI组件来实现可滚动的文本区域,它应该显示日志文件输出

我的三个主要要求是:

  1. 搜索-让用户在日志输出中查找单词。我要强调的是,搜索不能通过过滤器实现。我想跳转到日志文件中包含foo的a单元,而不隐藏其不包含foo的邻居,这与过滤不同
  2. 复制-它应该能够轻松地选择和复制行(这就是为什么我排除了基于DataGrid的解决方案)
  3. 过滤器-它应该使我能够隐藏某些行容易
  4. 颜色-有时能够使用某些颜色(基于过滤器)会很好

如果组件遵循MVC模式也很好

当然,使用常规的只读文本区实现所有这些功能是可能的,但我想知道是否有更简单的方法。这里唯一不寻常的功能是过滤,毕竟在我看来,搜索文本区域是一个常见的需求

Java GUI解决方案也可以接受(它也可以用于Java应用程序)

BareTail与我正在寻找的类似,但不幸的是,它不能作为组件使用


共 (6) 个答案

  1. # 1 楼答案

    ObjectListView(围绕.NET WinForms ListView的开源包装器)执行前缀搜索和即时复制(以及许多其他整洁的事情)

    您可以轻松地使用RowFormatter为特定行指定颜色

    如果使用虚拟列表版本,也可以轻松实现过滤。我用它来过滤100000多个项目的列表,性能很好(在我的中端笔记本电脑上)

    全文搜索必须具体实施。有一些钩子可以通过键入事件进行搜索

    所有这些都是假设您有某种合理的LogEntry类型的模型对象要显示。如果你只有一系列的文字,那你就只能靠自己了:)

  2. # 2 楼答案

    创建此类GUI的关键概念:

    • GlazedLists是你的朋友
    • JTable也是如此
    • 如果您的日志格式是fixed/xml,那就更容易了

    你想要点什么吗。它不是完全开源的,但我可以自由分享它的一些特性

  3. # 3 楼答案

    只需在中使用RichTextBox。净/成本#

  4. # 4 楼答案

    这是一个很好的WPF入门项目,我有,它做突出显示,动态日志文件加载和基本搜索。在过去,我发现仅仅为了搜索日志文件而维护全文索引代价太高

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

    为了显示日志消息,我使用了一个WPF列表视图,它是完全虚拟的,支持您的所有需求

  5. # 5 楼答案

    EclipseUI框架包含这样一个控制台,您可以通过文本搜索、语法突出显示等改进它。然而,我认为你需要的最小RCP插件对你的需求来说太多了

    然而,如果您已经基于Eclipse,这将是一个很好的解决方案

  6. # 6 楼答案

    为了实现精确的过滤,我认为你应该重新考虑把这些行组织成“列”,至少在引擎盖下面。对于我来说,显示这些专栏的直观用户界面似乎也是正确的。对于颜色来说,这应该没有什么区别

    从网格复制行应该很容易实现,一旦有了一些多行选择可用,用某种ToString方法将记录转换回“原始”文本行应该比其他方法容易得多

    因此,我认为你真的应该使用网格方法。如果是Xceed、Infrastics、其他供应商或内置的。NET数据网格。。。这是另一个问题