如何设置应用程序以可靠地将日志记录数据写入日志文件而又不降低速度?

时间:2019-05-06 17:06:03

标签: vb.net logging

我正在编写一个VB.NET应用程序,在该应用程序中,我需要登录到应用程序可执行文件旁边的.log文件,该文件的每一行都有一个时间戳,以及正在执行的功能/代码块的名称。我的应用程序中有一个Sub,可以处理写入文件的情况:

Imports System.IO
    Sub addToLog(contents As String)
       If Not File.Exists(logPath) Then createNewLog()
       Dim textToWrite = "[" & Date.Now & "] " & contents & vbNewLine
       File.AppendAllText(logPath, textToWrite)
    End Sub

(调用此Sub的每个函数都通过在Contents变量中进行反射来指定其名称。)

但是,我很快就发现此方法使我的应用程序减慢了速度,因为有许多正在执行的功能需要记录,并且addToLog调用至少需要10毫秒。

我认为我可以采用另一种方法-创建一个全局String变量,然后将日志记录数据写入该全局变量。退出该应用程序时,将调用另一个Sub,以一次将该全局变量的内容写入.log文件。问题是,如果应用程序崩溃,则数据将丢失,从而破坏了整个目的。因此,我以为我可以将对Sub的调用添加到Application Events中的MyApplication_UnhandledException Sub中。这个想法是即使应用程序崩溃,对文件Sub的写入仍将执行。但是,有些事情告诉我,这不是一种非常简单的方法,并且在某些情况下,如果应用程序以某种意外的方式崩溃,则可能不会将该全局变量的内容写入.log文件。

有人可以建议是否有比我描述的方法更快,更可靠的日志记录方法?我知道有VB.NET的日志记录库,但是我想学习如何做到这一点。

0 个答案:

没有答案