Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin Android上的NLog日志文件存储在哪里?_C#_Android_Xamarin_Nlog - Fatal编程技术网

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

C# Xamarin Android上的NLog日志文件存储在哪里?,c#,android,xamarin,nlog,C#,Android,Xamarin,Nlog,在一个示例中,我按照一些步骤将NLog集成到我们的Xamarin(非表单)应用程序中。其中存储日志文件的文件夹是${specialfolder:folder=MyDocuments}。如果我将该文件夹更改为例如/sdcard/Download,我会看到日志文件夹已创建,我可以访问/复制日志文件 C:\Users\bachph>C:\Android\android-sdk\platform-tools\adb.exe pull /sdcard/Download/logs/ D:\temp /

在一个示例中,我按照一些步骤将NLog集成到我们的Xamarin(非表单)应用程序中。其中存储日志文件的文件夹是${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)}");
我看不到shell中的数据,也无法从该文件夹访问/复制这些数据。我现在不确定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.

我找到了一种方法来访问/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>

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

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

(请参见
System.Environment.SpecialFolder.MyDocuments

NLog有
${specialfolder:folder=MyDocuments}
。另见


然后在应用程序中创建一个功能,从文件夹中读取当前日志文件,并发送到电子邮件应用程序或进行http上载(或直接在“应用程序关于”对话框中显示日志内容)

要了解发生了什么,请打开。如果路径无效(这是我的第一个猜测),它应该在那里可见。由此,我可以说他创建了一个日志文件。在NLog.config中,我有配置autoReload=“false”、throweexceptions=“true”、internalLogToConsole=“true”、internalLogLevel=“Trace”。似乎数据写入正确。这是一个许可问题。Android不允许通过shell查看数据。由于runas命令总是打印“unknown package”,因此我必须找到另一个解决方案来访问数据。见我的其他帖子。
java -jar abe-all.jar unpack backup.ab backup.tar [optional-password]