You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在.NET MAUI中使用Nlog?求相关配置示例

在.NET MAUI中使用NLog的方法及配置示例

一、是否支持?

当然可以,NLog官方已支持.NET MAUI环境,可通过NuGet包快速集成。

二、配置步骤及示例

1. 安装NuGet包

在项目中安装NLog.Extensions.Logging包,可通过Package Manager控制台执行:

Install-Package NLog.Extensions.Logging

2. 添加NLog配置文件

在项目根目录新建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"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="internal-nlog.txt">

  <!-- 定义日志输出目标 -->
  <targets>
    <!-- 输出到控制台 -->
    <target name="console" xsi:type="Console" />
    <!-- 输出到平台适配的应用数据目录文件 -->
    <target name="file" xsi:type="File" 
            fileName="${specialfolder:folder=ApplicationData}/maui-app.log"
            layout="${longdate} ${level} ${message} ${exception}" />
  </targets>

  <!-- 日志路由规则 -->
  <rules>
    <logger name="*" minlevel="Debug" writeTo="console,file" />
  </rules>
</nlog>

注:${specialfolder:folder=ApplicationData}会自动适配iOS、Android、Windows等平台的合法存储路径,避免权限问题。

3. 在MAUI程序中初始化NLog

修改MauiProgram.cs,替换默认日志提供器为NLog:

using NLog;
using NLog.Extensions.Logging;

namespace YourMauiAppName;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        // 初始化NLog并替换日志服务
        var logger = LogManager.Setup().LoadConfigurationFromFile("nlog.config").GetCurrentClassLogger();
        builder.Logging.ClearProviders();
        builder.Logging.AddNLog(logger);

        return builder.Build();
    }
}

4. 在业务代码中使用NLog

可通过依赖注入ILogger,或直接使用NLog静态类:

using Microsoft.Extensions.Logging;

namespace YourMauiAppName.ViewModels;

public class MainViewModel
{
    private readonly ILogger<MainViewModel> _logger;

    public MainViewModel(ILogger<MainViewModel> logger)
    {
        _logger = logger;
        _logger.LogInformation("MainViewModel 初始化完成");
    }

    // 静态类调用示例
    public void TestLogAction()
    {
        var staticLogger = LogManager.GetCurrentClassLogger();
        staticLogger.Debug("这是一条Debug级日志");
        staticLogger.Error(new Exception("测试异常"), "业务操作发生错误");
    }
}

内容的提问来源于stack exchange,提问作者Alessandro Caliaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:17:15