ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于NLog在.NET CORE下如何进行日志的持久化及通过邮件发送日志

2021-09-04 16:35:00  阅读:218  来源: 互联网

标签:CORE Web 化及 配置 NLog context webBuilder 日志 builder


配置过程

  1. 安装NLog

    通过Nuget进行集成(NuGet Gallery | NLog.Web.AspNetCore 4.14.0)

    通过命令行安装 Install-Package NLog.Web.AspNetCore -Version 4.14.0

    通过可视化管理工具查找并安装 NLog.Web.AspNetCore

  2. 修改Program.cs

    public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging((context, builder) =>
                {
                    // 适配原来的Log配置
                    builder.AddConfiguration(context.Configuration.GetSection("Logging"));
                    builder.AddConsole();
                    builder.AddDebug();
                    builder.AddEventSourceLogger();
                    // 以下关键配置
                    builder.AddNLogWeb();
                    builder.AddNLog();
                    // 关键配置结束
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("http://*:5000");
                    webBuilder.UseStartup<Startup>();
                });
    
  3. 配置Startup.cs

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ......
        
        // 在UseEndpoints之前增加如下增加对部分 Layout renderers 的支持
        app.Use(async (context, next) => {
            context.Request.EnableBuffering();
            await next();
        });
        
        ......
    }
    
  4. 增加NLog.config

    注意此文件配置为复制到输出目录

    每一项的配置可以参考下方的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"
          autoReload="true"
          throwConfigExceptions="true">
    
        <targets>
            <!-- 文件持久化 -->
            <target name="f1" xsi:type="File"
                    layout="PROJECT:${iis-site-name}${newline}
    REQUEST:${newline}
    ${aspnet-request-method} ${aspnet-request-url}${newline}
    QUERYSTRING:${newline}
    ${aspnet-request-querystring}${newline}
    HEADERS:${newline}
    ${aspnet-request-headers}${newline}
    FORM:${newline}
    ${aspnet-request-form}${newline}
    POSTED-BODY:${newline}
    ${aspnet-request-posted-body}${newline}
    COOKIE:${newline}
    ${aspnet-request-cookie}${newline}${newline}
    ${longdate}|${uppercase:${level}}|${logger}${newline}${newline}
    ${message}${newline}${newline}
    ${exception:format=ToString}"
                    fileName="Logs\nlog-all-${shortdate}.log" />
            <!-- 邮件支持 -->
            <target xsi:type="Mail"
                    name="m1"
                    html="true"
                    replaceNewlineWithBrTagInHtml="true"
                    addNewLines="true"
                    subject="发送邮件主题:[测试项目][${level}]${message}"
                    to="接收人邮箱"
                    from="发送人邮箱"
                    body="PROJECT:${iis-site-name}${newline}
    REQUEST:${newline}
    ${aspnet-request-method} ${aspnet-request-url}${newline}
    QUERYSTRING:${newline}
    ${aspnet-request-querystring}${newline}
    HEADERS:${newline}
    ${aspnet-request-headers}${newline}
    FORM:${newline}
    ${aspnet-request-form}${newline}
    POSTED-BODY:${newline}
    ${aspnet-request-posted-body}${newline}
    COOKIE:${newline}
    ${aspnet-request-cookie}${newline}${newline}
    ${longdate}|${uppercase:${level}}|${logger}${newline}${newline}
    ${message}${newline}${newline}
    ${exception:format=ToString}"
                    smtpUserName="发送人账号"
                    enableSsl="true"
                    smtpPassword="发送人密码"
                    smtpAuthentication="Basic"
                    smtpServer="发送邮箱的smtp"
                    smtpPort="发送邮箱的smtp端口" />
    
        </targets>
    
        <rules>
            <logger name="*" minlevel="Error" writeTo="f1" />
            <logger name="*" minlevel="Error" maxlevel="Error" writeTo="m1" />
        </rules>
    </nlog>
    

相关资源

NLog官网:NLog (nlog-project.org)

NLog配置项:Config | NLog (nlog-project.org)

标签:CORE,Web,化及,配置,NLog,context,webBuilder,日志,builder
来源: https://www.cnblogs.com/ykbb/p/15226976.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有