.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);
        }

        #endregion

        #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);
        }

        #endregion

        #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);
        }

        #endregion

        #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);
        }

        #endregion
    }
}

 添加测试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,运行测试

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:Blazor是春天还是寒风里的挣扎
下一篇:利用SelectPdf插件将网页生成PDF
评论列表

发表评论

评论内容
昵称:
关联文章

.Net 6 添加NLog
VS .NET使用EF添加实体数据模型向导添加连接报错
《步步入门》 .NET 6 部署到Linux
使用.NET 6开发TodoList应用(6)——使用MediatR实现POST请求
使用.NET 6开发TodoList应用(22)——实现缓存
.NET5 ASP.NET Core 添加API限流
使用.NET 6开发TodoList应用(12)——实现ActionFilter
使用.NET 6开发TodoList应用(25)——实现RefreshToken
使用.NET 6开发TodoList应用(16)——实现查询排序
使用.NET 6开发TodoList应用(15)——实现查询搜索
wifnorm处于设计模式校验 (.NET6)
asp.net TagHelper根据条件向元素添加class
asp.net core MVC路由添加.html伪静态url时报错
纸壳CMS v3.5升级.Net 6免费下载
.NET6中一些常用组件的配置及使用记录,持续更新中。。。
使用Hot Chocolate和.NET 6构建GraphQL应用(2) —— 实体相关功能实现
使用.NET 6开发TodoList应用(29)——实现静态字符串本地化功能
使用.NET 6开发TodoList应用(填坑1)——实现当前登录用户获取
使用.NET 6开发TodoList应用(24)——实现基于JWT的Identity功能
使用.NET 6开发TodoList应用(19)——处理OPTION和HEAD请求

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码