我正在使用 Microsoft Enterprise Library 5.0 Optional Update 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);
我会得到一个带有文本的 DirectoryNotFoundException:找不到路径的一部分'D:\Project\Application\bin\x86\Debug\%ALLUSERSPROFILE%\CompanyName\AppName\Diagnostics\ErrorLog.xml'.
当我使用绝对路径时,'C:\ProgramData\CompanyName\AppName\Diagnostics\ErrorLog.xml'
它会起作用。
我看到许多参考资料说我应该能够在日志文件路径中使用环境变量,但是无论我尝试哪种方式,它们都会附加到当前执行目录路径中。参考资料还说,如果文件夹不存在,日志系统将创建该文件夹,但我必须确保它存在。
这是我第一次使用 Enterprise Logging 应用程序块,所以我不知道版本之间的行为是否发生了变化,以及这个是否只是有这些怪癖。目前,我已将路径硬编码到我的 app.config 文件中,但对于最终版本,这应该是动态确定的。
建议表示赞赏。