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

NLog log file on Xamarin - Android issues

我一直在尝试使用 android 中的 NLog,它在使用基于控制台的输出时有效。但是,当我尝试以外部存储为目标时 area/file 没有任何反应....没有创建日志文件...

我的清单包含以下几行:

<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[=12=]\Download\log.txt" />
  </targets>
  <rules>
    <!-- add your logging rules here -->
    <logger name="*" minlevel="Error" writeTo="logfile" />
  </rules>
</nlog>

我的 activity 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 级别 25 of api。

NLog.config 文件被捆绑为一个 android 资产,似乎可以加载,因为它可以找到目标等

还不够

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

您还需要通过类似

的方式请求许可

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

(不完整,您还需要处理许可结果,但有很多关于如何处理的好资源)。

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