Xamarin.Forms.Net标准项目上的NLog

Xamarin.Forms.Net标准项目上的NLog,xamarin.forms,nlog,Xamarin.forms,Nlog,我正在为iOS和Android编写一个Xamarin.Forms应用程序。xamarin.net标准项目中的代码最多。现在我想使用NLog作为记录器。我添加了nuGet paket,并在project.Config文件夹下创建了一个NLog.Config文件 无法使用该配置文件加载记录器。在我的App.xaml.cs构造函数中,我添加了: LogManager.ThrowExceptions = true; LogManager.Configuration = new XmlLoggingCon

我正在为iOS和Android编写一个Xamarin.Forms应用程序。xamarin.net标准项目中的代码最多。现在我想使用NLog作为记录器。我添加了nuGet paket,并在project.Config文件夹下创建了一个NLog.Config文件

无法使用该配置文件加载记录器。在我的App.xaml.cs构造函数中,我添加了:

LogManager.ThrowExceptions = true;
LogManager.Configuration = new XmlLoggingConfiguration("config\\NLog.config");
Logger logger = LogManager.GetLogger("console");
logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
存在异常,因为对路径的访问被拒绝。。。如果我把这行注释掉

LogManager.Configuration = new XmlLoggingConfiguration("config\\NLog.config");
什么也没发生。NLog找不到配置。有人知道Xamarin标准项目是否支持NLog吗?或者如何解决问题


问候

我也在我们的应用程序中使用NLog,但是我在本机impmementations(iOS上的AppDelegate和Android上的MainActivity)中初始化NLog和相应的配置(在codebehind中创建),并通过依赖项服务调用记录器。 我不得不这么做,因为当时NLog不能用于可移植类库


如果这种情况发生了变化,并且最终可以在共享代码中创建记录器,我假设您需要将config.xml放入本机应用程序资源/资产中,然后在pcl中通过DependencyService检索资产/资源。

我可能可以帮到您。我的解决方案适用于基于.net标准的XF项目,但也适用于基于PCL的项目(有一些样板类)。 不幸的是,我还没有用文件目标输出测试这个解决方案

您需要将XML配置文件放入库项目中,然后编辑文件的属性-将构建操作更改为嵌入式资源,然后需要将此文件作为NLog配置源加载

这里是完整的例子。
稍后,我将尝试添加文件作为日志目标,并且我将在iOS平台上测试此示例

更新NLog维基:@RolfKristensen真棒,谢谢!直接从程序集加载比我的旧方法更快。