Wpf 部署应用程序时未写入log4net日志文件

Wpf 部署应用程序时未写入log4net日志文件,wpf,log4net,Wpf,Log4net,我有一个使用log4net的WPF应用程序。当我在VisualStudio中运行它时,日志文件会按预期在Debug或Release文件夹中创建 但是,当我创建安装程序并运行已安装的应用程序时,不会创建日志文件。我在代码中添加了以下行 string logFilePath = ((Hierarchy)LogManager.GetRepository()) .Root.Appenders.OfType<FileAppender>()

我有一个使用log4net的WPF应用程序。当我在VisualStudio中运行它时,日志文件会按预期在Debug或Release文件夹中创建

但是,当我创建安装程序并运行已安装的应用程序时,不会创建日志文件。我在代码中添加了以下行

  string logFilePath = ((Hierarchy)LogManager.GetRepository())
                 .Root.Appenders.OfType<FileAppender>()
                 .FirstOrDefault()?.File;
  using (StreamWriter sw = new StreamWriter(@"d:\log.log")) {
    sw.WriteLine("Log file: " + logFilePath);
  }
文件的底部看起来像这样

  <startup>
    <supportedRuntime version="v4.0"
                      sku=".NETFramework,Version=v4.5.2" />
  </startup>

</configuration>

介于两者之间的部分都与应用程序使用的WCF服务有关

有人有什么想法吗


编辑:作为测试,我尝试将App.config中的日志文件路径硬编码到我的D:drive(因此它是硬编码的,没有权限问题),但文件仍然没有创建。

感谢@dymanoid为我指明了正确的方向。log4net文档在这方面有点弱,但我发现它指出您可以在配置文件中使用普通的环境变量

借助于此,我最终得到了以下结果

  <param name="File"
         value="${LOCALAPPDATA}\Physio Diary\PhysioDiaryClient.log" />

这将正确地将文件写入
C:\Users\MyUsername\AppData\Local\Physio Diary\PhysioDiaryClient.log


希望这对其他人有所帮助。

您不应该将%ProgramFiles%目录配置为日志记录目标,因为一般来说,不允许应用程序写入该目录。@dymanoid理想情况下,我希望将日志文件写入用户本地文件夹中的客户文件夹。知道我该怎么做吗?但我不确定这是否是答案,因为即使我硬编码了我的D:drive的路径(我肯定有权限),文件也没有写入。不过,还是有必要先确定位置,看看是否有帮助。谢谢
  <param name="File"
         value="${LOCALAPPDATA}\Physio Diary\PhysioDiaryClient.log" />