繁体   English   中英

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

[英]Logging using Serilog from a .NET standard 1.4 class library from a UWP app

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

它在从 .NET 框架桌面应用程序调用的 .NET 框架类库中运行良好。 当我使用带有 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 应用程序无权访问设备上的所有文件。 默认情况下,应用程序可以访问某些文件系统位置,例如应用程序安装目录或应用程序数据位置。 有关详细信息,请参阅文件访问权限

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

LocalCacheFolder受该应用程序的控制并且在应用程序会话中是持久的。 LocalCacheFolder应用于跨应用程序会话所需的生成内容,例如缓存文件、日志或身份验证令牌。

例如:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM