Я использую Microsoft Enterprise Library 5.0 Дополнительное обновление 1 для ведения журнала. У меня есть заявленный раздел в моем файле app.config следующим образом:Enterprise Logging не перевод переменных среды в XML Trace Listener fileName спецификация
<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'
, он работает.
Я вижу несколько ссылок, говорящих, что я должен использовать окружения vars в пути к файлу журнала, но независимо от того, что я пытаюсь, они добавляются к текущему пути каталога выполнения. В ссылках также говорится, что система регистрации создаст папку, если она не существует, но я должен убедиться, что она существует.
Это мое первое использование блока приложений Enterprise Logging, поэтому я не знаю, изменилось ли поведение между версиями, и если у этого есть только эти причуды. На данный момент я жестко закодировал путь в файле app.config, но для окончательной версии это должно быть динамически определено.
Предложения оценены.