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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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);

 

五、成果展示

很奇怪没写的指定路径

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
人工智能 API C#
使用Microsoft.Extensions.AI简化.NET中的AI集成
使用Microsoft.Extensions.AI简化.NET中的AI集成
使用Microsoft.Extensions.AI简化.NET中的AI集成
|
20天前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
24 3
|
4月前
|
SQL 程序员
分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子
分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子
|
2月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
109 9
|
2月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
2月前
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
|
4月前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
53 8
|
4月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
79 0
|
4月前
|
Java Spring UED
Spring框架的异常处理秘籍:打造不败之身的应用!
【8月更文挑战第31天】在软件开发中,异常处理对应用的稳定性和健壮性至关重要。Spring框架提供了一套完善的异常处理机制,包括使用`@ExceptionHandler`注解和配置`@ControllerAdvice`。本文将详细介绍这两种方式,并通过示例代码展示其具体应用。`@ExceptionHandler`可用于控制器类中的方法,处理特定异常;而`@ControllerAdvice`则允许定义全局异常处理器,捕获多个控制器中的异常。
58 0