Я использую Microsoft Enterprise Library 5.0 Дополнительное обновление 1 для ведения журнала.У меня есть объявленный раздел в файле 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);
Iя получу исключение DirectoryNotFoundException с текстом: не удалось найти часть пути 'D:\Project\Application\bin\x86\Debug\%ALLUSERSPROFILE%\CompanyName\AppName\Diagnostics\ErrorLog.xml'.
Когда я использую абсолютный путь, такой как 'C:\ProgramData\CompanyName\AppName\Diagnostics\ErrorLog.xml'
, он работает.
Я вижу рядссылки говорят, что я должен иметь возможность использовать переменные среды в пути к файлу журнала, но, независимо от того, что я пытаюсь, они добавляются к текущему пути каталога выполнения.В ссылках также говорится, что система ведения журналов создаст папку, если она не существует, но я должен убедиться, что она существует.
Это мое первое использование блока приложения Enterprise Logging, поэтому я не знаю,поведение изменилось между версиями, и если эта просто имеет эти причуды.На данный момент я жестко запрограммировал путь в своем файле app.config, но для окончательной версии это должно быть определено динамически.
Предложения приветствуются.