Я использую необязательное обновление 1 Microsoft Enterprise Library 5.0 для ведения журнала. У меня есть объявленный раздел в моем файле app.config следующим образом:
<loggingConfiguration name="LLamasoftLoggingConfiguration" tracingEnabled="true" defaultCategory="General">
<listeners>
<add name="XML Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.XmlTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.XmlTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
fileName="%ALLUSERSPROFILE%\CompanyName\AppName\Diagnostics\ErrorLog.xml" traceOutputOptions="None" />
</listeners>
...
</loggingConfiguration>
Когда я запускаю приложение и приступаю к ведению журнала, например,
logWriter = Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.Current.GetInstance<LogWriter>();
logWriter.Write(logEntry);
Я получу DirectoryNotFoundException с текстом: Не удалось найти часть пути 'D:\Project\Application\bin\x86\Debug\%ALLUSERSPROFILE%\CompanyName\AppName\Diagnostics\ErrorLog.xml'.
Когда я использую абсолютный путь, например 'C:\ProgramData\CompanyName\AppName\Diagnostics\ErrorLog.xml'
, он работает.
Я вижу ряд ссылок, в которых говорится, что я должен иметь возможность использовать переменные среды в пути к файлу журнала, но независимо от того, что я пытаюсь, они добавляются к текущему пути к каталогу выполнения. В ссылках также говорится, что система ведения журнала создаст папку, если она не существует, но я должен убедиться, что она существует.
Это мое первое использование блока приложения Enterprise Logging, поэтому я не знаю, изменилось ли поведение между версиями и есть ли у этой только эти причуды. На данный момент я жестко прописал путь в свой файл app.config, но в окончательной версии он должен определяться динамически.
Предложения приветствуются.