gpt4 book ai didi

c# - 使用来自 UWP 应用程序的 .NET 标准 1.4 类库中的 Serilog 进行日志记录

转载 作者:行者123 更新时间:2023-11-30 15:17:44 24 4
gpt4 key购买 nike

我在使用 Serilog 写入 json 文件的 .NET 标准 1.4 类库时遇到问题。它运行没有错误,但不生成文件。

它在从 .NET Framework 桌面应用程序调用的 .NET Framework 类库中运行良好。当我将 UWP 应用程序与 UWP 类库一起使用时,我遇到了同样的问题。这是我的类库中的代码:

    public class OligoLog
{
public void Test()
{
Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(new CompactJsonFormatter(), @"C:\Test\log.json")
.CreateLogger();

Log.Information("This is a test");

Log.CloseAndFlush();
}
}

建议?

最佳答案

正如@Lex Li 所指出的,UWP 应用程序无权访问设备上的所有文件。默认情况下,应用程序可以访问某些文件系统位置,例如应用程序安装目录或应用程序数据位置。更多信息,请参阅File access permissions .

"C:\Test\log.json" 是您的应用无法直接访问的位置。在 UWP 中处理文件或文件夹时,一个重要的规则是 Skip the path: stick to the StorageFile .但是,RollingFile 方法需要一个路径作为参数。因此,您可以将日志存储到应用程序数据位置。和 LocalCacheFolder可能是个不错的选择。引用 Using application folders :

LocalCacheFolderis under control of that app and is persistent across app sessions. LocalCacheFoldershould be used for generated content needed across app sessions, such as cached files, logs, or authentication tokens.

例如:

Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(new CompactJsonFormatter(), Windows.Storage.ApplicationData.Current.LocalCacheFolder.Path + @"\log-{Date}.json")
.CreateLogger();

Log.Information("This is a test");

关于c# - 使用来自 UWP 应用程序的 .NET 标准 1.4 类库中的 Serilog 进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45723876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com