首页 > 解决方案 > UWP中的Serilog没有将日志写入D盘

问题描述

我在我的 UWP 应用程序中使用 Serilog。我可以毫无问题地将日志写入 App LocalState 文件夹。

但现在我想在D:驱动器特定文件夹中写入日志。我添加了broadFileSystemAccess受限功能并启用了设置的完全访问权限。

但它仍然没有在指定位置创建文件并且没有引发任何错误。

有人知道解决这个问题吗?提前致谢。

var file = @"D:\Logs\Serilog.txt";

Serilog.Log.Logger = new LoggerConfiguration().WriteTo.File(file).CreateLogger();

标签: filelogginguwpserilog

解决方案


文件访问权限文档中有一个关于广泛文件系统访问功能的非常重要的信息。我不确定你是否注意到它。

broadFileSystemAccess功能仅适用于Windows.Storage命名空间中的 API。

这一点非常重要。因此,您的问题实际上是您需要检查LoggerConfiguration().WriteTo.File(file).CreateLogger()相关方法是否使用 Windows.Storage API 写入文件。

通过我的检查,它使用StreamWriter方法写入文件。但此方法不包含在Windows.Storage API 中。所以,这个问题非常明显。你需要把这个 issue 提交到Github,让官方修改这个方法,让它在 UWP 中运行。

或者,如果您对serilog-sinks-file源代码感兴趣,您可以下载它并自己进行更改,然后,您可以为您的 UWP 项目编译自定义的 serilog 库版本。


推荐阅读