Получение текущего содержимого файла журнала в журнале 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
,