关于.Net 6 添加NLog的方法

 更新时间:2022年01月24日 11:49:28   作者:林俊杰中国分杰  
.Net项目中关于日志的组件还是很多的,包括log4net,Nlog,以及.net core 框架自带的Logging,今天就简单介绍一下Nlog,对.Net 6 添加NLog相关知识感兴趣的朋友一起看看吧

创建一个.Net 6 Demo项目

引入NLog包

添加项目配置文件nlog.config

<?xml version="1.0" encoding="utf-8"?>
<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" >
    <!-- the targets to write to -->
    <targets>
        <!--单个文件过大会导致写入效率下降,可配置单个文件的最大容量-->
        <target name="File" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">
            <target xsi:type="File"
                    fileName="${basedir}/logs/${shortdate}.log"
                    layout="${date:yyyy-MM-dd HH\:mm\:ss} ${level:uppercase=true} ${event-context:item=Action} ${message} ${event-context:item=Amount} ${stacktrace}"
                    archiveAboveSize="10240"
                    archiveEvery="Day"
                    />
        </target>
        <!-- write logs to file -->
        <!--<target xsi:type="File" name="logfile" fileName="c:\temp\console-example.log"
                layout="${longdate}|${level}|${message} |${all-event-properties} ${exception:format=tostring}" />-->
        <!--<target xsi:type="Console" name="logconsole"
                layout="${longdate}|${level}|${message} |${all-event-properties} ${exception:format=tostring}" />-->
    </targets>
    <!-- rules to map from logger name to target -->
    <rules>
        <!--<logger name="*" levels="Debug,Info,Warn,Error" writeTo="File" />-->
        <logger name="*" minlevel="Debug" maxlevel="Error" writeTo="File" />
    </rules>
</nlog>

layout布局:

${longdate} 格式:2022-01-21 17:00:28.4860

后面的毫秒不是我想要的,可以自定义:date:yyyy-MM-dd HH\:mm\:ss

NLog等级

Trace:最常见的记录信息,一般是普通输出

Debug:同样是记录信息,出现的频率比Trace少,一般是调试程序

Info:信息类型的消息

Warn:警告消息

Error:错误消息

自上而下,等级递增

指定特定等级:level="Warn"

指定多个等级:levels="Debug,Info" 以逗号分隔

指定等级范围:minlevel="Info" maxlevel="Error"

<rules>
    <!--<logger name="*" levels="Debug,Info,Warn,Error" writeTo="File" />-->
    <logger name="*" minlevel="Debug" maxlevel="Error" writeTo="File" />
</rules> 

添加工具类 Logger

using NLog;

namespace TestNet6.Utilities
{
    public class Logger
    {
        NLog.Logger _logger { get; set; }
        private Logger(NLog.Logger logger)
        {
            _logger = logger;
        }
        public Logger(string name) : this(LogManager.GetLogger(name))
        public static Logger Default { get; private set; }
        static Logger()
            Default = new Logger(LogManager.GetCurrentClassLogger());
        #region Dedub
        public void Debug(string msg, params object[] args)
            _logger.Debug(msg, args);
        public void Debug(string msg, Exception e)
            _logger.Debug(e, msg);
        #endregion
        #region Info
        public void Info(string msg, params object[] args)
            _logger.Info(msg, args);
        public void Info(string msg, Exception e)
            _logger.Info(e, msg);
        #region Trace
        public void Trace(string msg, params object[] args)
            _logger.Trace(msg, args);
        public void Trace(string msg, Exception e)
            _logger.Trace(e, msg);
        #region Warn
        public void Warn(string msg, params object[] args)
            _logger.Warn(msg, args);
        public void Warn(string msg, Exception e)
            _logger.Warn(e, msg);
        #region Error
        public void Error(string msg, params object[] args)
            _logger.Error(msg, args);
        public void Error(string msg, Exception e)
            _logger.Error(e, msg);
    }
}

添加测试Controller

using Microsoft.AspNetCore.Mvc;
using TestNet6.Utilities;
namespace TestNet6.Controllers
{
    public class TestController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public string Test()
        {
            Logger.Default.Info("", Request);
            return "Test String";
        }
    }
}

最后为了路由有效,还需要添加路由映射

var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
//添加路由映射
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

OK,运行测试

到此这篇关于.Net 6 添加NLog的文章就介绍到这了,更多相关.Net 6 添加NLog内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.net 页面版文本框智能提示JSCode (升级版)

    asp.net 页面版文本框智能提示JSCode (升级版)

    模拟百度,Google智能提示,非与服务器端交互的,数据源来自已经绑定好的下拉列表。纯客户端脚本 升级版
    2009-12-12
  • .NET之后台用户权限管理实现

    .NET之后台用户权限管理实现

    在功能性比较强大的后台管理网站处于各种角度考虑多有应用权限管理功能。以公司内部管理系统为例,管理员根据不同员工所在不同部门赋予其不同权限,或者根据上下级隶属关系实现“金字塔”管理。本文内容有不尽不实之处恳请指正。
    2013-02-02
  • ASP.NET 服务器路径和一般资源调用

    ASP.NET 服务器路径和一般资源调用

    ASP.NET 服务器路径和一般资源调用,实现代码。
    2009-08-08
  • ASP.NET表单验证方法详解

    ASP.NET表单验证方法详解

    在表单提交的时候,经常需要对录入信息的长度、格式、内容等进行验证,以便获得合理的信息。在ASP.NET开发中主要的验证方法,我总结了一下,主要有一下几种,如有不足之处请朋友们予以指出。
    2008-09-09
  • vs2012创建的ado.net模型无法实例化的解决方案

    vs2012创建的ado.net模型无法实例化的解决方案

    本文给大家分享的是升级vs2012后,发现创建数据模型无法实例化使用,尝试了很多种方法,最后在度娘的帮助下,才解决了这个问题,这里记录下来,分享给大家。
    2015-03-03
  • .NET 4.5 异步IO 相关实例

    .NET 4.5 异步IO 相关实例

    本篇文章小编为大家介绍,.NET 4.5 异步IO 相关实例,需要的朋友参考下
    2013-04-04
  • asp.net实现简单分页实例

    asp.net实现简单分页实例

    这篇文章主要介绍了asp.net实现简单分页的方法,实例分析了asp.net分页的基本原理与实现流程,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • asp.net与excel互操作实现代码

    asp.net与excel互操作实现代码

    将datatable中的数据导出到指定的excel文件中
    2010-04-04
  • .NET 缓存设计的使用说明

    .NET 缓存设计的使用说明

    缓存是提高应用程序性能的最好方法之一。运用缓存可以优化数据查询,避免不必要的网络数据回传,和避免执行不必要的完全相同的数据处理逻辑。
    2013-03-03
  • java 单例模式(饿汉模式与懒汉模式)

    java 单例模式(饿汉模式与懒汉模式)

    这篇文章主要介绍了java 单例模式(饿汉模式与懒汉模式)的相关资料,希望通过本文大家能掌握这部分内容,需要的朋友可以参考下
    2017-09-09

最新评论