按日期戳记对文件中的内容进行排序

时间:2015-11-17 08:16:40

标签: vb.net logging

到目前为止,我已经使用Visual Studio 2015 Community Edition程序在Visual Basic中创建了一个脚本。 我正在努力寻找的是一个解决方案,我可以通过时间戳来订购内容。以下是文件内容的示例:

dd.mm.yyyy hh.mm.ss text to end of line here
01.10.2015 06.50.43 Somebody tried to log into [username] with an incorrect password from [ip]

这基本上是所有日志文件包含的内容。日期戳和一些由空格分隔的信息。

到目前为止,我的脚本检查文件是否存在,如果文件存在,则将文件中的所有行存储到“List(Of Strings)”中。

当找到所有行并到达流的末尾时,它会在同一窗口的richtextbox中打印出“log”。在打印出内容之前我想要发生的是,脚本按时间戳排序,如果可能的话,现在存储在从最旧到最新的字符串列表中。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

一个简单但丑陋的解决方案可能

lst_string.Sort(Function(x, y) DateTime.ParseExact(x.Substring(0, 19), "dd.MM.yyyy HH.mm.ss", System.Globalization.CultureInfo.InvariantCulture).CompareTo(DateTime.ParseExact(y.Substring(0, 19), "dd.MM.yyyy HH.mm.ss", System.Globalization.CultureInfo.InvariantCulture)))

但是你可能最好为你的inputdata创建一个由datetime和comment分隔的类,如果你愿意的话

Dim ld As New LoginData
ld.dateLogedIn = DateTime.ParseExact(lst_string(0).Substring(0, 19), "dd.MM.yyyy HH.mm.ss", System.Globalization.CultureInfo.InvariantCulture)
ld.commentary = lst_string(0).Substring(20)

以这种方式更容易为您添加更多参数,如用户名或IP,并相应地进行排序

lst_newList.Sort(Function(x, y) x.dateLogedIn.CompareTo(y.dateLogedIn))