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