Процесс не может получить доступ к файлу «MyFile.log», так как он используется другим процессом - PullRequest
10 голосов
/ 03 января 2012

Я получаю

Процесс не может получить доступ к файлу "MyFile.log", поскольку он используется другим процессом.

пока я делаю это

File.SetAttributes(filename,FileAttributes.Normal)

using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
    // Do stuff with log4net log
}

Я читал другие посты, но все они подсказывают, что я уже делаю. Любые другие предложения?

Спасибо.

1 Ответ

42 голосов
/ 03 января 2012

Попытайтесь настроить log4net с минимальной блокировкой:

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    ...
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
   ...
</appender>

, посмотрите здесь для лучшего объяснения.

Или попробуйте открыть файл журнала с:

     using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))
    {...
}

или проверьте этот проект: Tailf В любом случае удалите часть SetAttributes (), которая не могла работать. Описание проекта Tailf Tailf - это реализация команды tail -f на C #, доступная в системах unix / linux.В отличие от других портов, он не блокирует файл каким-либо образом, поэтому он работает, даже если другие переименовывают файл: это специально разработано для правильной работы с приложением для файла журнала log4net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...