如何在运行应用程序时不需要关闭文件时写日志文件?

时间:2014-03-12 02:44:25

标签: c# file logging

我们在C#中有静态类Logger,其中日志文件在应用程序启动时初始化。在每个 512字节之后,日志文件将回滚(创建新日志文件)。现在问题是,我无法在外部打开当前日志文件,因为它已在我的应用程序中打开。

我无法理解如何处理这个问题。如何打开当前打开的日志文件,同时不应该损害当前的文件操作。

感谢。

2 个答案:

答案 0 :(得分:1)

在您的情况下,使用FileShare.ReadWrite至关重要。这应该是你的诀窍:

using (FileStream stream = File.Open("filePath", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (StreamReader reader = new StreamReader(stream))
    {
        while (!reader.EndOfStream)
        {
            // do your stuff here
        }
    }
}

答案 1 :(得分:1)

为了给您准确的答案,我需要查看记录器的代码。但我会解释这个想法。让我们说记录器使用System.IO.File.Open()方法创建/打开日志文件进行写入。使用Open()方法的重载,该方法允许您指定FileShare参数(here is the link)并为该参数指定FileShare.Read。这将允许应用程序以只读模式打开日志文件,因此不会损害日志记录操作。