开发者社区> 依乐祝> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

简介:
+关注继续查看

# Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

前几天分享的"Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验" 反响还行。有网友就说有了NLog+MySql的组合,那如果我是用SqlServer怎么使用NLog呢?于是乎,这篇“Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验”就诞生了!关于记录到文本文件里面的方法上篇文章也已经说明了。而且NLog+SqlServer的组合跟NLog+MySql的组合使用方法很类似知识配置不一样。因此这篇文章会很精简,直接讲使用了!
作者:依乐祝
本文地址:https://www.cnblogs.com/yilezhu/p/9451282.html

NLog+SqlServer的组合在Net Core中怎么用啊?

  1. 关于怎么安装,使用,请看我的上篇文章“Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验”。用法一样,只是如果你需要把MySql的程序集改成“System.Data.SqlClient”.依赖项截图如下所示:

1533814354906

  1. 打开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"
          throwExceptions="true"
          internalLogLevel="warn"
          internalLogFile="logfiles/internal-nlog.txt">
      <targets>
        <target xsi:type="Null" name="blackhole" />
        <target name="database" xsi:type="Database"
                  dbProvider="System.Data.SqlClient"
                  connectionString="Data Source=127.0.0.1;Initial Catalog=MiddleData;User ID=lzhu;Password=bl123456;"
                 >
          <!--
    create table NLog (
       Id                   int                  identity,
       Application          nvarchar(50)         null,
       Logged               datetime             null,
       Level                nvarchar(50)         null,
       Message              nvarchar(512)        null,
       Logger               nvarchar(250)        null,
       Callsite             nvarchar(512)        null,
       Exception            nvarchar(512)        null,
       constraint PK_NLOG primary key (Id)
    )
    
    -->
          <commandText>
            insert into nlog (
            Application, Logged, Level, Message,
            Logger, CallSite, Exception
            ) values (
            @Application, @Logged, @Level, @Message,
            @Logger, @Callsite, @Exception
            );
          </commandText>
          <parameter name="@application" layout="NLogTestDemo" />
          <parameter name="@logged" layout="${date}" />
          <parameter name="@level" layout="${level}" />
          <parameter name="@message" layout="${message}" />
          <parameter name="@logger" layout="${logger}" />
          <parameter name="@callSite" layout="${callsite:filename=true}" />
          <parameter name="@exception" layout="${exception:tostring}" />
        </target>
    
      </targets>
    
      <rules>
        <!--Skip Microsoft logs and so log only own logs-->
        <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
        <logger name="NLogTestDemo.*" minlevel="Info" writeTo="database" />
      </rules>
    </nlog>
  2. 上面的代码中我是以写入SqlServer为例进行的NLog配置。下面就可以进行简单地使用了。首先需要在。首先在Startup中的Configure中来加入中间件:

     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                //使用NLog作为日志记录工具
                loggerFactory.AddNLog();
                //引入Nlog配置文件
                env.ConfigureNLog("Nlog.config");
                //app.AddNLogWeb();
                app.UseMvc();
            }
  3. 在Program中进行如下配置:

    public class Program
        {
            public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                .UseNLog()
                    .UseStartup<Startup>();
        }
  4. 下面就可以在代码中愉快的玩耍了,

      private readonly Logger nlog = LogManager.GetCurrentClassLogger(); //获得日志实;
    
            // GET api/values
            [HttpGet]
            public ActionResult<string> Get()
            {
                nlog.Log(NLog.LogLevel.Debug, $"yilezhu测试Debug日志");
                nlog.Log(NLog.LogLevel.Info, $"yilezhu测试Info日志");
                try
                {
                    throw new Exception($"yilezhu故意抛出的异常");
                }
                catch (Exception ex)
                {
    
                    nlog.Log(NLog.LogLevel.Error, ex, $"yilezhu异常的额外信息");
                }
                return "yilezhu的返回信息";
            }
  5. 下面运行起来项目,然到数据库里面就可以看到记录的日志信息如下所示:

1533814568292

这里大家可能会问,为什么没有Debug信息输出呢,这是因为我们上面NLog配置设置的记录日志的最低级别为Info.所以比Info级别小的Debug信息不会记录。如果想记录的话就把这个级别设置成Debug或者比Debug小的Trace就可以记录了。如下图所示:

1533303848950

源码下载

https://download.csdn.net/download/qin_yu_2010/10594141

总结

本文开头讲述了上篇关于“Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验”说起,然后引出轻量级简单易用的NLog+SqlServer组合,并通过一个简单地api项目讲述了NLog+SqlServer组合如何在Net Core中使用。以及SqlServer的建表语句。实例代码都跟上篇文章很相似。希望能对大家有所参考!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
.net core webapi 前后端开发分离后的配置和部署
背景:现在越来越多的企业都采用了在开发上前后端分离,前后端开发上的分离有很多种,那么今天,我来分享一下项目中得的前后端分离。
1836 0
使用Dapper.Contrib 开发.net core程序,兼容多种数据库
原文:使用Dapper.Contrib 开发.net core程序,兼容多种数据库 关于Dapper的介绍,我想很多人都对它有一定的了解,这个类似一个轻型的ORM框架是目前应用非常火的一个东西,据说各方面的性能都不错,而且可以支持多种数据库,在开始介绍这个文章之前,我花了不少功夫来学习了Dapper 的相关使用。
936 0
asp.net core结合NLog搭建ELK实时日志分析平台
0、整体架构   整体架构目录:ASP.NET Core分布式项目实战-目录 一、介绍ELK   1、说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp.net core 的数据。
638 0
asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记! Exceptionless是什么?能做什么呢? “Exceptionless”这个词的定义是:没有异常。
1593 0
.Net框架搭建之1、SQL Server EF MVC简单三层框架
.Net简单三层框架简介 简单三层框架,是.Net开发中最最基础的框架了,由 数据访问层、逻辑处理层、表示层组成。
905 0
+关注
依乐祝
学无先后,达者为师!爱写代码并乐于分享技术但不喜欢搞基!目前专注于ASP.NET Core微服务架构的研究。能够利用现有开源的微服务相关的技术开发支持高并发,高可用的分布式系统!本人微账信号:jkingzhu。.NETCore实战项目交流群637326624
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Web应用系统性能优化
立即下载
《深度解读MongoDB 最全面的增强版本4.4 新特性》
立即下载
低代码开发师(初级)实战教程
立即下载