我正在尝试制作用于分析日志的日志查看器。我正在读取每行上有时间戳,日志类型和文本的日志文件。从这里我创建了一个具有DateTime对象,Type和Text的对象。
类型分为6种类型:
public enum LogType
{
DEBUG = 0,
EVENT,
ERROR,
TEST_STEP,
WARNING,
SUCCESS
}
这个想法是每个日志级别旁边都有一个复选框,以便我可以快速添加或删除指定的日志级别。现在,这适用于具有不同日志级别的良好传播的小型日志文件。但是当我有大量的日志文件时,它需要一些时间来加载,因为每次复选框更改时我都会迭代对象数组并再次打印行,这是非常无效的。
是否有更好的方法将这些对象连接到每一行,或者有另一个更适合的组件,以便您可以轻松隐藏或显示日志级别?
最诚挚的问候 安德烈亚斯
答案 0 :(得分:0)
我所能推荐的只是使用WPF和UI virtualization
,这样您就不会在UI中添加大量代表日志行的元素,并且过滤使用parlallelization
加速事情并让UI保持响应。
答案 1 :(得分:0)
由于您不需要实时更新,因此您可以读取整个文件,并将不同类型存储在不同的类中,这些类继承自相同的基类。例如,您为每种类型都有一个基类Log
和一个派生类DebugLog : Log
等。您只能在基类中定义和实现大多数字段,因为它只是存储一些数据,而无需对其进行修改。
这些派生类按类型的日志级别分别存储数据。这样,您可以通过清除列表并仅加载所需类中的数据来刷新UI,而无需再次重新遍历所有数据(当然,取决于过滤器)。
您必须构建某种排序处理程序才能正确显示数据。