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

时间:2017-02-09 04:32:56

标签: xamarin xamarin.forms serilog

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

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

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

1 个答案:

答案 0 :(得分:3)

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) 工作正常(加上它在你的应用程序沙箱中打包。)