【问题标题】:NLog on Xamarin.Forms .Net-Standard ProjectXamarin.Forms .Net 标准项目上的 NLog
【发布时间】:2023-04-09 02:28:01
【问题描述】:

我正在为 iOS 和 Android 编写 Xamarin.Forms 应用程序。大多数代码在 xamarin .net-standard 项目中。现在我想使用 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?或者如何解决问题?

问候

【问题讨论】:

    标签: xamarin.forms nlog


    【解决方案1】:

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

    你需要把XML配置文件放到库项目中,然后编辑文件的属性——把build action改成embedded resource,然后你需要加载这个文件作为 NLog 配置源。

    完整的例子在这里https://github.com/bondarenkod/xf-nlog-netstandart-example。 稍后我将尝试将文件添加为日志目标,并且我将在 iOS 平台上测试此示例。

    【讨论】:

    【解决方案2】:

    我也在我们的应用程序中使用 NLog,但是我在本机实现(iOS 上的 AppDelegate 和 Android 上的 MainActivity)中初始化 NLog 和相应的配置(在代码隐藏中创建)并通过依赖服务调用记录器。 我必须这样做,因为当时 NLog 不适用于可移植类库。

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

    【讨论】:

      猜你喜欢
      • 2018-02-11
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2018-04-30
      • 1970-01-01
      相关资源
      最近更新 更多