zoukankan      html  css  js  c++  java
  • Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

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

    前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]" 反响还行。有网友就说有了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组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]”。用法一样,只是如果你需要把MySql的程序集改成“System.Data.SqlClient”.依赖项截图如下所示:

      1533814354906

    2. 打开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>
      
    3. 上面的代码中我是以写入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();
              }
      
    4. 在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>();
          }
      
    5. 下面就可以在代码中愉快的玩耍了,

        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的返回信息";
              }
      
    6. 下面运行起来项目,然到数据库里面就可以看到记录的日志信息如下所示:

      1533814568292

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

      1533303848950

    源码下载

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

    总结

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

  • 相关阅读:
    asp.net区
    推荐大家一个保护视力的Visual Studio皮肤
    微软Team Foundation Server相关技术
    TFS2008安装图解(详细版本)
    VS2008 ,TFS2008破解序列号
    分析器错误信息: 发现不明确的匹配。
    ASP.NET MVC Routing概述
    软件工程文档编写
    Visual SourceSafe学习小结
    aspnetpager 详解 (转)
  • 原文地址:https://www.cnblogs.com/yilezhu/p/9451282.html
Copyright © 2011-2022 走看看