xamarin - 在android中,使用serilog.sinks.RollingFile时,我无法创建文件夹或将日志详细信息保存在特定文件中

标签 xamarin xamarin.forms serilog

为了获取 xamarin 项目中的错误日志详细信息,我在项目中安装了 serilog.sinks.xamarin nuget 包。在android中,我尝试将日志详细信息存储在文档文件夹中。这是我的代码

Log.Logger=new LoggerConfiguration().WriteTo.RollingFile(Path.Combine(Environment.DirectoryDocuments,"AndroidErrorLog.txt"))
.WriteTo.AndroidLog().CreateLogger();

执行项目后,如果我检查文档文件夹,则不会创建文件,也找不到日志详细信息。谁能告诉我我犯了什么错误以及如何解决这个问题?

最佳答案

Log.Logger = new LoggerConfiguration()
                .WriteTo.File(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "JCA_log-{Date}.txt")
                , outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}")
                .WriteTo.AndroidLog()
                .CreateLogger();

摘自 PhillipOGorman,来源如下:

我遇到了这个问题。我认为构造函数中的某些内容似乎阻止了 Serilog 创建文件。

注意#1:提供的 Serilog 代码依赖于 Sinks.File 和 Sinks.Xamarin.Droid Serilog 库。

注释 #2:他使用了: Android.OS.Environment.ExternalStorageDirectory.AbsolutePath 当引用文件将写入的位置时, Environment.GetFolderPath(Environment.SpecialFolder.Personal) 工作正常(而且它将它打包在您的应用程序沙箱中。)

关于xamarin - 在android中,使用serilog.sinks.RollingFile时,我无法创建文件夹或将日志详细信息保存在特定文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128306/

相关文章:

ios - 关闭 View 时如何传回数据

ios - ZXing Xamarin Forms iOS 白底(无Custom Renderer)

c# - 记录我的 ASP.NET Core 应用程序成功启动或未启动的时间

azure - 在 Azure 函数中通过 Nlog 记录到 Logentries

android - Google OAuth Android 的重定向 url

c# - 将 DialogViewController 推送到 ViewController 到 NavigationController 堆栈上会产生 2 页

ios - 带有自定义 View 的 Xamarin.Forms 弹出对话框

android - 新的 Xamarin Forms 4.6 MediaElement 不适用于 Android

c# - 在 Serilog 中更改/覆盖日志事件级别

ios - 无法使用 Xamarin Studio 在 iPhoneSimulator 上进行测试