首页 > 其他分享 >.net core中使用nlog替代默认日志

.net core中使用nlog替代默认日志

时间:2022-10-20 18:45:01浏览次数:45  
标签:core CreateHostBuilder Web args NLog nlog net logger

1、添加引用nlog.config和Nlog.Web.AspNetCore

 

2、配置NLog 配置文件

<?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">

  <targets>
    <!--此部分中的所有目标将自动异步-->
    <target name="asyncFile" xsi:type="AsyncWrapper">
      <!--项目日志保存文件路径说明fileName="${basedir}/保存目录,以年月日的格式创建/${shortdate}/${记录器名称}-${单级记录}-${shortdate}.txt"-->
      <target name="log_file" xsi:type="File"
              fileName="${basedir}/ProjectLogs/${shortdate}/${logger}-${level}-${shortdate}.txt"
              layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
              archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
              archiveAboveSize="102400"
              archiveNumbering="Sequence"
              concurrentWrites="true"
              keepFileOpen="false" />
    </target>
    <!--使用可自定义的着色将日志消息写入控制台-->
    <target name="colorConsole" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" />
  </targets>

  <!--规则配置,final - 最终规则匹配后不处理任何规则-->
  <rules>
    <logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
    <logger name="*" minlevel="Info" writeTo="asyncFile" />
    <logger name="*" minlevel="Warn" writeTo="colorConsole" />
  </rules>
</nlog>

 

 

3. 修改配置program

 
 1 public class Program
 2      {
 3          public static void Main(string[] args)
 4          {
 5              CreateHostBuilder(args).Build().Run();
 6  
 7              var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
 8              try
 9              {
10                  logger.Debug("init main");
11                  CreateHostBuilder(args).Build().Run();
12              }
13              catch (Exception exception)
14              {
15                  //NLog: catch setup errors
16                  logger.Error(exception, "Stopped program because of exception");
17                  throw;
18              }
19              finally
20              {
21                  // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
22                  NLog.LogManager.Shutdown();
23              }
24          }
25  
26          public static IHostBuilder CreateHostBuilder(string[] args) =>
27              Host.CreateDefaultBuilder(args)
28                  .ConfigureWebHostDefaults(webBuilder =>
29                  {
30                      webBuilder.UseStartup<Startup>();
31                  }).ConfigureLogging(logging =>
32                  {
33                      logging.ClearProviders(); // 这个方法会清空所有控制台的输出
34                      logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
35                  })
36                  .UseNLog(); // 使用NLog;
37      }

 

 

4. 实例 在Web api中使用,跟VS自带的日志记录一样去使用

 

标签:core,CreateHostBuilder,Web,args,NLog,nlog,net,logger
From: https://www.cnblogs.com/LaoMa0109/p/16810880.html

相关文章

  • Spring AOP与自定义注解Annotation的使用 实践 @Around("@annotation(operationLog)")
    SpringAOP与自定义注解Annotation的使用AOP,Spring框架的两大核心之一,又称面向切面编程,通过代理模式,对原有的类进行增强。在Spring框架中,AOP有两种动态代理方式,其一是基......
  • DenseNet网络简述
    1.DenseNet网络DenseNet是指Denselyconnectedconvolutionalnetworks(密集卷积网络)。在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法。CNN史上的一个里程碑事件是......
  • .NET Core Onvif协议C#教程系列之XiaoFeng.Onvif组件库
        物联网IOT大背景下音视频领域的Onvif协议在2008年成为全球性的开放接口标准。   于是一批开发者涌入该技术领域使用各种编程语言对其改造升级封装。 ......
  • Kubernetes创建pod
    1创建tomcat的相关配置,配置tomcat的镜像和对外暴露的接口mkdir/usr/local/k8scd/usr/local/k8s/touchmytomcat.rc.yamltouchmytomcat.svc.yamlmytomcat.rc.ya......
  • Kubernetes单机安装
    Kubernetes单机安装1关闭Centos防火墙systemctldisablefirewalldsystemctlstopfirewalld2安装之前建议update一下保证yum是最新版本yumupdate3安装etcd......
  • 《Multi-scale 3D deep convolutional neural network for hyperspectral image class
    论文题目:《Multi-scale3Ddeepconvolutionalneuralnetworkforhyperspectralimageclassification》 论文作者:MingyiHe,BoLi,HuahuiChen论文发表年份:2017......
  • 字段加密实践(django-fernet-fields)
    一、fernet介绍Fernet用于django模型字段对称加密,使用crytography库。官网帮助文档1、先决条件django-fernet-fields支持Django1.8.2以及更高版本,Python2.7、3......
  • Kubernetes环境搭建
    一、在Kubernetes环境搭建过程中,会创建CA、admin、etcd等等证书,创建证书的过程中需要注意当前系统的时间,否则很可能因为生成证书时间同其他系统时间差别,造成证书验证失败。......
  • Net6 定时调度Quartz.AspNetCore(3.5.0)的使用
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、概述Quartz.Net是根据Java的Quartz用C#改写而来,Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数......
  • 【Kubernetes】K8s笔记(十):Service 解决服务发现的关键问题
    目录0.打造Service对象的动机1.Service的工作原理2.使用YAML描述Service3.在Kubernetes中使用Service4.以域名方式使用Service5.让Service对外暴露服务......