我已经在这里挣扎了几个小时但没有用。
我需要使用名为 TMP
或 TEMP
的环境变量,该变量包含我要记录的Windows Temp文件夹。通常它是C:\Windows\Temp
(当然这个值可能会因系统而异,这就是我需要变量值的原因)。
问题是每个键都有两个值:
我使用以下XML来指示Log4Net(在C#下)加载临时文件夹(粘贴相关部分):
<appender name="SomeFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="${TMP}\Logs\SomeLogFileName.log" />
<appendToFile value="true" />
当我运行程序时,它会将日志写入用户临时文件夹:
C:\Users\myuser\AppData\Local\Temp\Logs
问题是如何强制Log4Net从系统级别而不是用户级别获取TMP / TEMP的环境变量?
答案 0 :(得分:1)
如果您的应用程序由特定用户运行,您通常只想写入特定于用户的目录。 C:\ Windows \ TEMP是PC的所有用户共享的目录。如果您真的想写信,那么通常您希望以系统用户身份运行您的应用程序。
(这只是典型情况;授予可能存在您希望特定用户写入系统范围目录的个别情况。)
现在,如果您以SYSTEM身份运行,您将在您的环境中获取TMP / TEMP的系统级定义。
答案 1 :(得分:0)
如果确实@JeroenMostert
是正确的,并且不可能(没有转向注册表),我使用了WINDIR
环境变量(值为 C:\ Windows 强大的>)作为一个解决方案,我接下来将展示。
但是,如果有人想出更好的答案,我会很高兴。
<appender name="SomeFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="${WINDIR}\temp\Logs\SomeLogFileName.log" />
<appendToFile value="true" />