日志系统——日志的分类与过滤(3)

一、为什么分类

因为如果不进行分类所有级别的日志都放在一起非常的杂乱。
也不便于查询错误信息,在项目发布初还没稳定需要所有信息,之后稳定只需要警告级别以上的信息时就可以启到过滤效果。
在这里插入图片描述
只有Error级别
在这里插入图片描述

二、实例展示

创建一个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="info"
      internalLogFile="internal-nlog-AspNetCore3.txt">

  <!-- enable asp.net core layout renderers -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <!-- the targets to write to -->
  <targets>


    <!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
    <target xsi:type="File" name="sysServicesFile" archiveAboveSize="10000" maxArchiveFiles ="3" fileName="logs/sysService-${shortdate}.log"
            layout="${date}|${level:uppercase = true}|${logger}|${message} ${exception:format=ToString}" />
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>

    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="_01_Logging.*"  minlevel="Trace"  writeTo="sysServicesFile" final="true" />  <!-- BlackHole -->

  </rules>
</nlog>

在这里插入图片描述
NLog的提供的服务日志类,要自己创建
在这里插入图片描述
Program

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



namespace _01_Logging
{
    class Program
    {
        static void Main(string[] args)
        {
            ///模拟startup实例一个ServiceCollection 
            ServiceCollection services = new ServiceCollection();
            services.AddLogging(
                logBuilder=>
                {
                    logBuilder.AddConsole();
                    logBuilder.AddNLog();
                    logBuilder.SetMinimumLevel(LogLevel.Trace);
                }
                );
            //注册服务
            services.AddScoped<SystemService>();
            //通过服务构建容器,ServiceProvider类型
            using (var sp = services.BuildServiceProvider())
            { ///获取容器中的服务ITestService
                var test2 = sp.GetRequiredService<SystemService>();
                for (int i = 1; i <= 1000; i++)
                {

                    test2.Logging();
                }
              
            }
        }
    }
}

源码地址

https://github.com/1768894221/CSharp

三、NLog其他

1.NLog部分功能与.Net的Logging功能重复,比如分类、分级,各种Provider
2.为了避免冲突如果使用NLog,不要在使用微软的分级(具体用法见微软官方文档)

3.其他输出扩展文档,可以向redis,邮件等多个地方输出
https://nlog-project.org/config/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

有诗亦有远方

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

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

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

打赏作者

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

抵扣说明:

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

余额充值