Xamarin上的NLog日志文件 - Android问题

时间:2018-02-27 15:37:25

标签: android xamarin xamarin.android nlog

我一直在尝试使用Android的NLog,它在使用基于控制台的输出时工作。但是当我尝试定位外部存储区/文件时没有任何反应......没有创建日志文件...

我的清单包含以下几行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我的Nlog.config

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
  <targets>
    <target name="logfile" xsi:type="File" fileName="storage\emulated\0\Download\log.txt" />
  </targets>
  <rules>
    <!-- add your logging rules here -->
    <logger name="*" minlevel="Error" writeTo="logfile" />
  </rules>
</nlog>

我的活动MainActivity.cs:

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Logger sm_logger = LogManager.GetCurrentClassLogger();
        sm_logger.Debug("test output");
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
    }

所有这些代码都运行,似乎没有错误抛出,但是没有创建文件...使用控制台记录器确实输出到控制台但是...任何帮助都将不胜感激。

注意:

我同时使用模拟器和设备,都没有创建日志文件。

我正在建立Android 7.1级别的api。

NLog.config文件捆绑为androidasset,似乎加载,因为它可以找到目标等

1 个答案:

答案 0 :(得分:2)

单单拥有

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

您还需要使用类似的请求

ActivityCompat.RequestPermissions(Adapter.Activity, new String[] { Manifest.Permission.WriteExternalStorage }, 1234);

(这是不完整的,您还需要处理权限结果,但是那里有足够的资源来执行此操作)。

这需要在创建NLog FileTarget之前发生。