我一直在尝试使用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,似乎加载,因为它可以找到目标等
这还不够
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
你还需要申请许可
ActivityCompat.RequestPermissions(Adapter.Activity, new String[] { Manifest.Permission.WriteExternalStorage }, 1234);
(这是不完整的,你还需要处理权限结果,但是有很好的资源可以解决这个问题)。
这需要在创建NLog FileTarget之前发生。