0

我目前正在尝试制作一个日志查看器来分析日志。我正在阅读每行都有时间戳、日志类型和文本的日志文件。由此我创建了一个具有 DateTime 对象、Type 和 Text 的对象。

类型分为6种:

public enum LogType
{
    DEBUG = 0,
    EVENT,
    ERROR,
    TEST_STEP,
    WARNING,
    SUCCESS
}

这个想法是每个日志级别旁边都有一个复选框,以便我可以快速添加或删除指定的日志级别。现在,这适用于具有不同日志级别的良好分布的小型日志文件。但是,当我有巨大的日志文件时,加载需要一些时间,并且每次复选框更改时我都会迭代对象数组并逐行打印,这是非常无效的。

有没有更好的方法将这些对象连接到每一行,或者有另一个更适合的组件,以便您可以轻松隐藏或显示日志级别?

最好的问候安德烈亚斯

4

2 回答 2

0

由于您不需要实时更新,您可以读取整个文件,并将不同的类型存储在不同的类中,这些类继承自同一个基类。例如,对于每种类型,您都有一个基类Log和一个派生类DebugLog : Log等。您只能在基类中定义和实现大多数字段,因为它只是存储一些数据,无需修改它。

这些派生类按照日志级别的类型分别存储数据。这样,您可以通过清除列表并仅从您需要的类中加载数据来刷新您的 UI,而无需再次遍历所有数据(当然取决于过滤器)。

不过,您必须构建某种排序处理程序才能正确显示数据。

于 2013-02-14T07:57:10.267 回答
0

我所能推荐的只是使用 WPF,UI virtualization这样您就不会用大量代表日志中的一行的元素给 UI 带来负担,并且可以使用过滤parlallelization来加快处理速度并让 UI 响应。

于 2013-02-13T13:05:34.310 回答