我正在为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吗?或如何解决该问题?
问候
答案 0 :(得分:1)
可能可以帮您。我的解决方案适用于基于.net标准的XF项目,但也适用于基于PCL的项目(具有一些样板类)。 不幸的是,我还没有使用文件目标输出来测试该解决方案。
您需要将XML配置文件放入库项目中,然后编辑文件的属性-将 build操作更改为嵌入式资源,然后需要加载此文件作为NLog配置源。
完整示例在此处https://github.com/bondarenkod/xf-nlog-netstandart-example。 稍后,我将尝试将文件添加为日志目标,并且还将在iOS平台上测试此示例。
答案 1 :(得分:0)
我也在我们的应用程序中使用NLog,但是我在本机渗透(iOS上的AppDelegate和Android上的MainActivity)中初始化了NLog和相应的配置(在代码隐藏中创建),并通过依赖项服务在记录器上调用。 我之所以必须这样做,是因为那时NLog在可移植类库中不可用。
如果情况发生了变化,并且最终可以在共享代码中创建记录器,那么我认为您需要将config.xml放入本机应用程序资源/资产中,然后在pcl中通过DependencyService检索资产/资源