ASP.NET COR3.1 集成日志插件NLog

一、引言

好的框架肯定要有好的日志记录。另外鄙人发现个问题:服务器带域名的项目会报错,而不带域名的和源码执行不报错,因此也要用日志记录下。据说NLog比Log4net效率高。

二、引入NLog插件

三、配置NLog

3.1 新建一个XML文件,文件名为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"
      throwConfigExceptions="true"
      internalLogLevel="Off"
      internalLogFile="C:\temp\internal-nlog.txt">
  <targets>
    <!-- Trace级别日志,输出到html文件 -->
    <target xsi:type="File"
                name="TraceFile"
                fileName="${basedir}/logs/${shortdate}_Trace.html"
                layout="【记录时间】:${longdate} &lt;br&gt;
				        【文名名称】:${logger} &lt;br&gt;
						【日志级别】:${uppercase:${level}} &lt;br&gt;
						【日志内容】:${message} ${exception} &lt;hr size=2 color=red&gt;" />
  </targets>
  <rules>
    <!-- Microsoft.*表示通配符,所有微软日志将被过滤 -->
    <logger name="Microsoft.*" minlevel="Trace"  final="true" />
    <logger name="*" minlevel="Trace" writeTo="TraceFile" />
  </rules>
</nlog>

 3.2 引入NLog的相关组件后,我们需要将NLog设置为系统的日志管理器,修改Program.cs文件,代码如下:

添加这2句:

NLogBuilder.ConfigureNLog("nlog.config");
.ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                })
                .UseNLog();

总体代码如下:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Yadinghao.Web
{
    public class Program
    {
        public static void Main(string[] args)
        {
            NLogBuilder.ConfigureNLog("nlog.config");
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
          
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();

                }).ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                })
                .UseNLog();
    }
}

四、写日志

在Controller里面在其构造函数中注入ILogger接口代码:

        private IWebHostEnvironment _Environment;
        private readonly ILogger<SystemController> _Logger;
        #region 构造函数
        /// <summary>
        /// SystemController的构造函数
        /// </summary>
        /// <param name="_environment"></param>
        /// <param name="_logger"></param>
        public SystemController(IWebHostEnvironment _environment, ILogger<SystemController> _logger)
        {
            _Environment = _environment;
            _Logger = _logger;
        }
        #endregion

配置完成就开始写

 

 _Logger.LogDebug(currentXmlFileName);

 

五、成果展示

很奇怪没写的指定路径

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NLog是什么?NLog((http://www.nlog-project.org)是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。NLog完全实现了我们上面的期望目标,并且还远远不止这些……NLog允许我们自定义从跟踪消息的来源(source)到记录跟踪信息的目标(target)的规则(rules)。记录跟踪信息的目标(target)可以为如下几种形式:文件文本控制台Email数据库网络中的其它计算机(通过TCP或UDP)基于MSMQ的消息队列Windows系统日志其他形式,请参考http://www.nlog-project.org/targets.html除此之外,每一条跟踪消息都可以自动带有上下文信息(contextual information),并将其发送给记录跟踪信息的目标。这些上下文信息可以包含如下内容:当前的日期和时间(多种格式)记录等级来源名称输出跟踪消息的方法的堆栈信息环境变量的值异常的详细信息计算机、进程和线程名称其他,请参考:http://www.nlog-project.org/layoutrenderers.html 每条跟踪信息都包含一个记录等级(log level)信息,用来描述该条信息的重要性。NLog支持如下几种记录等级:Trace - 最常见的记录信息,一般用于普通输出Debug - 同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序Info - 信息类型的消息Warn - 警告信息,一般用于比较重要的场合Error - 错误信息Fatal - 致命异常信息。一般来讲,发生致命异常之后程序将无法继续执行。NLog是一个免费的、基于BSD license发布的开源类库。即使将其应用于商业使用中,也基本上不会有任何的限制。NLog的二进制可执行文件以及原文件均可在http://www.nlog-project.org/download.html页面中下载。我们同时还为NLog提供了图形界面的安装程序,您可以选择NLog的安装路径,并可在安装过程中添加如下内容到Visual Studio集成开发环境中(同样支持Express版本):配置文件模板NLog配置文件智能感知支持代码片断(code snippet)集成至“Add Reference...”对话框 标签:日志组件  log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚丁号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值