NLog在.Net Core控制台应用程序上的使用

Nuget包的引用

NLog.Extensions.Logging
Microsoft.Extensions.DependencyInjection

创建nlog.config配置文件

<?xml version="1.0" encoding="utf-8" ?>
<!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xsi:schemaLocation="NLog NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogFile="/logs/console-example-internal.log"
      internalLogLevel="Info" >


  <!-- the targets to write to -->
  <targets>
    <!-- write logs to file -->
    <target xsi:type="File" name="target1" fileName="${basedir}/logs/${shortdate}/console-example.log"
            layout="${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}" />
    <target xsi:type="Console" name="target2"
            layout="${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}" />


  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <logger name="*" minlevel="Trace" writeTo="target1,target2" />

  </rules>
</nlog>

创建两个runner 类

第一个 Runner类

using Microsoft.Extensions.Logging;

namespace NLogInDotnetCoreConlose
{
    public class Runner
    {
        private readonly ILogger<Runner> _logger;

        public Runner(ILogger<Runner> logger)
        {
            _logger = logger;
        }

        public void DoAction(string name)
        {
            _logger.LogDebug(20, "Doing hard work! {Action}", name);
        }


    }
}

第二个Runner类

using Microsoft.Extensions.Logging;

namespace NLogInDotnetCoreConlose
{
    public class Runner2 
    {
        private readonly ILogger<Runner2> _logger;

        public Runner2(ILogger<Runner2> logger)
        {
            _logger = logger;
        }

        public void DoAction(string name)
        {
            _logger.LogDebug(20, "Doing hard work! {Action}", name);
        }
    }
}

在Program创建依赖注入(DI)容器和修改main()的代码

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NLog;
using NLog.Extensions.Logging;
using System;

namespace NLogInDotnetCoreConlose
{
    class Program
    {
        static void Main(string[] args)
        {
            var logger = LogManager.GetLogger("*");
            logger.Info("这个信息");
            logger.Debug("这个调试");
            logger.Error("这个是错误");
            var servicesProvider = BuildDi();
            var runner = servicesProvider.GetRequiredService<Runner>();
            runner.DoAction("runner Action");

            var runner2 = servicesProvider.GetRequiredService<Runner2>();
            runner.DoAction("runner2 Action");

            Console.WriteLine("Press ANY key to exit");
            Console.ReadLine();

            // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
            LogManager.Shutdown();
        }

        private static ServiceProvider BuildDi()
        {            

            return new ServiceCollection()
                .AddLogging(builder => {
                    builder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                    builder.AddNLog(new NLogProviderOptions
                    {
                        CaptureMessageTemplates = true,
                        CaptureMessageProperties = true
                    });
                })
                .AddTransient<Runner>()
                .AddTransient<Runner2>()
                .BuildServiceProvider();
        }
    }
}

运行程序后

窗口会显示如下图内容
在这里插入图片描述
同时logs目录下也会生成同样内容的日志文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值