Получение текущего содержимого файла журнала в журнале Enterprise Library

Я настроил блок приложения ведения журнала Enterprise Library для входа в файл с именем app.log, который находится в пути выполнения моего приложения. Это приложение представляет собой службу Windows, которая запускает веб-сайт конфигурации поверх него, и теперь я хочу показать содержимое файла журнала.

Получение файла журнала было довольно простой задачей:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var logSection = config.GetSection("loggingConfiguration") as LoggingSettings;

var lookup = logSection.TraceListeners
                .Where(x => x is RollingFlatFileTraceListenerData).FirstOrDefault() as RollingFlatFileTraceListenerData;
if(lookup != null) {
    var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, lookup.FileName);
    return File.ReadAllText(_logFilePath);
}

Тем не менее, RollingFlatFileTraceListener, который я настроил постоянно, БЛОКИРУЕТ файл, из которого я хочу прочитать. Есть ли возможность получить к нему доступ?

1 ответ

Проверьте этот ответ. Это не поведение по умолчанию для File.ReadAllText вне меня...

using (var logFileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var logFileReader = new StreamReader(logFileStream))
{
    return logFileReader.ReadToEnd();
}

Также обратите внимание, что вы смешиваете filePath а также _logFilePath,

Другие вопросы по тегам