如何在Xamarin Android中使用NLog

bttbmeg0  于 2022-12-07  发布在  Android
关注(0)|答案(2)|浏览(213)

我想在我的Xamarin.Droid项目中使用NLog。我安装了NLog.config和依赖项,并手动将NLog.config和NLog.xsd移动到Assets文件夹,并将NLog.config构建操作更改为AndroidAsset。
正如您在从Assets文件夹自动加载NLog.config中所看到的,我想将NLog.config放入Assets文件夹没有问题。
之后我修改NLog.config如下

<targets>
    <target name="console" xsi:type="Console" layout="${longdate} ${callsite} ${level} ${message}"/>
</targets>
<rules>
    <logger name="*" minlevel="Info" writeTo="console" />
</rules>

之后,我编写了一些代码,如下所示,用于在控制台中编写一些日志

ILogger logger = LogManager.GetCurrentClassLogger();
for (int c = 0; c < 1000; ++c)
    logger.Debug("Hi there");

但在那之后,当"显示输出"设置为调试时,我无法在Android设备日志或输出选项卡中看到任何我的消息。
我找对地方了吗?

os8fio9y

os8fio9y1#

您的配置显示最低级别info

<logger name="*" minlevel="Info" writeTo="console" />

但是你写的是debug级别,低于info

logger.Debug("Hi there");

因此,请将记录器规则更改为:(级别名称和属性名称不区分大小写)

<logger name="*" minlevel="debug" writeTo="console" />
emeijp43

emeijp432#

NLogv 5不再自动扫描AndroidsAssets-folder中的NLog.config。
从Assets-folder显式加载NLog.config,或者考虑将NLog.config嵌入为Assembly-Ressource:

NLog.LogManager.Setup().LoadConfigurationFromAssemblyResource(typeof(App).GetTypeInfo().Assembly);

另请参阅:https://github.com/NLog/NLog/wiki/Explicit-NLog-configuration-loading
注意NLog.Targets.MauiLog也可用于特定于平台的输出:

  • Android -Android.实用程序.日志/日志猫
  • Apple iOS / MacOS -统一日志记录OSLog(替代打印和NSLog)

相关问题