在Xamarin Android上的哪里存储NLog日志文件?

时间:2019-10-07 09:14:36

标签: c# android xamarin nlog

tutorial中,我按照一些步骤将NLog集成到我们的Xamarin(非Forms)应用程序中。在其中存储日志文件的文件夹是$ {specialfolder:folder = MyDocuments}。如果我将该文件夹更改为例如/ sdcard / Download我看到已经创建了一个日志文件夹,并且可以访问/复制日志文件。

C:\Users\bachph>C:\Android\android-sdk\platform-tools\adb.exe pull /sdcard/Download/logs/ D:\temp
/sdcard/Download/logs/: 2 files pulled. 5.4 MB/s (2077256 bytes in 0.370s)

如果我现在将文件夹更改回$ {specialfolder:folder = MyDocuments}并打印该文件夹的路径

LogManager.GetCurrentClassLogger().Info("NLog.config loaded. Application Start.");
LogManager.GetCurrentClassLogger().Info($"NLog logs to {Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)}");

我在外壳中看不到数据,也无法从该文件夹访问/复制它们。我现在不确定我的Android是否只允许访问该文件夹/文件,或者NLog无法写入该文件夹。

有什么想法吗?


编辑:内部跟踪日志输出

2019-10-07 11:39:47.6959 Debug FileTarget(Name=f): Process file '/data/data/de.app.debug/files/logs/app-2019-10-07.log' on startup
2019-10-07 11:39:47.7298 Debug Creating file appender: /data/data/de.app.debug/files/logs/app-2019-10-07.log
2019-10-07 11:39:47.7377 Debug Mutex for file archive not supported
2019-10-07 11:39:47.7439 Trace Opening data/data/de.app.debug/files/logs/app-2019-10-07.log with allowFileSharedWriting=False
2019-10-07 11:39:47.6440 INFO App.Activities.Base.MainActivity NLog.config loaded. Application Start.

2 个答案:

答案 0 :(得分:3)

我找到了一种访问/ data / data文件夹中的数据的方法。不幸的是,访问数据有些棘手。

首先,“运行方式”命令在我的设备上不起作用。因此,我必须创建一个“备份”来从应用程序中获取所有数据。

您可以使用以下方法创建备份:

adb.exe backup -f D:\temp\backup.ab -noapk de.app.debug
adb.exe backup -f <path-to-local-file> -noapk <app-base-package>

您将提示您确认设备上的操作。您可以选择为备份文件选择密码。

这将创建一个android备份。要访问备份文件中的数据,您需要java archive的帮助。从那里获取最新的abe-all.jar。

您现在可以使用以下方式将android备份转换为tar存档

java -jar abe-all.jar unpack backup.ab backup.tar [optional-password]

然后只需提取新创建的backup.tar文件。您可以在其中找到应用程序包中的所有数据。

答案 1 :(得分:1)

在Xamarin平台上访问日志文件的另一种方法是保存在特殊文件夹“我的文档”中。

https://docs.microsoft.com/en-us/xamarin/android/platform/files/(请参见System.Environment.SpecialFolder.MyDocuments

NLog具有${specialfolder:folder=MyDocuments}。另请参见https://github.com/NLog/NLog/wiki/Special-Folder-Layout-Renderer

然后在应用程序中创建一项功能,以从文件夹中读取当前日志文件,并发送到email-app或进行http-upload(或者直接在application-about-dialog中显示日志内容)< / p>