我有一个使用NLog创建日志文件的应用程序。我还有另一个叫做“日志查看器”的应用程序,它可以打开和读取上述的日志文件。但是这里有一些问题。当日志查看器在读取日志文件时,第一个应用程序正在写入其中,一些日志行可能无法在日志查看器中看到。 例如,如果第一个应用程序每毫秒写入一个日志,日志查看器无法跟踪新的日志行并且会错过其中一些。你知道吗?我需要一个在线日志查看器,可以追踪任何新的日志行。我不想在每个方法调用时读取文件中的所有文本,我只需要读取其中的新日志行。
让两个应用程序共享同一个日志文件可能会带来问题。最简单的解决办法是让您的查看器复制原始日志文件,查看自己专用的副本。您可以偶尔检查实际日志文件是否有更新,并相应地制作新的副本。
如果两个应用程序都访问同一个文件,需要进行锁定,并且可能会在文件无法写入时导致应用程序出现问题(可能会阻塞、丢失日志条目或生成异常)。
System.Collections.Concurrent.BlockingCollection<T>
,以异步方式执行这两个操作。 - Imad Nabil Alnatsheh