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”.依赖项截图如下所示:

  2. 打开Nlog.config文件,把NLog的配置修改成如下所示。我写的只是参考,大家可以自由发挥:

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. autoReload="true"
    5. throwExceptions="true"
    6. internalLogLevel="warn"
    7. internalLogFile="logfiles/internal-nlog.txt">
    8. <targets>
    9. <target xsi:type="Null" name="blackhole" />
    10. <target name="database" xsi:type="Database"
    11. dbProvider="System.Data.SqlClient"
    12. connectionString="Data Source=127.0.0.1;Initial Catalog=MiddleData;User ID=lzhu;Password=bl123456;"
    13. >
    14. <!--
    15. create table NLog (
    16. Id int identity,
    17. Application nvarchar(50) null,
    18. Logged datetime null,
    19. Level nvarchar(50) null,
    20. Message nvarchar(512) null,
    21. Logger nvarchar(250) null,
    22. Callsite nvarchar(512) null,
    23. Exception nvarchar(512) null,
    24. constraint PK_NLOG primary key (Id)
    25. )
    26. -->
    27. <commandText>
    28. insert into nlog (
    29. Application, Logged, Level, Message,
    30. Logger, CallSite, Exception
    31. ) values (
    32. @Application, @Logged, @Level, @Message,
    33. @Logger, @Callsite, @Exception
    34. );
    35. </commandText>
    36. <parameter name="@application" layout="NLogTestDemo" />
    37. <parameter name="@logged" layout="${date}" />
    38. <parameter name="@level" layout="${level}" />
    39. <parameter name="@message" layout="${message}" />
    40. <parameter name="@logger" layout="${logger}" />
    41. <parameter name="@callSite" layout="${callsite:filename=true}" />
    42. <parameter name="@exception" layout="${exception:tostring}" />
    43. </target>
    44. </targets>
    45. <rules>
    46. <!--Skip Microsoft logs and so log only own logs-->
    47. <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    48. <logger name="NLogTestDemo.*" minlevel="Info" writeTo="database" />
    49. </rules>
    50. </nlog>
  3. 上面的代码中我是以写入SqlServer为例进行的NLog配置。下面就可以进行简单地使用了。首先需要在。首先在Startup中的Configure中来加入中间件:

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

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

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

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

源码下载

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的建表语句。实例代码都跟上篇文章很相似。希望能对大家有所参考!

Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验的更多相关文章

  1. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  2. Net Core 2.1 日志记录框架NLog+Mysql配置

    NLog是什么? 这里还是简单介绍一下吧,为了让小白也知道.NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET Core.NLog可以通过简单地配置就可以可以很方便的写入多个日 ...

  3. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  4. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  5. 【转】asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  6. C++实现简单的日志记录

    C++实现简单的日志记录 //dlogger.h #ifndef DLOGGER_H #define DLOGGER_H #include <iostream> #include < ...

  7. (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)

    转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...

  8. 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大

    讲到log4j,现在国外基本是没有开发者用这个框架了,原因大致有几点,1.功能太少:2.效率低下:3.线程锁bug等等等各种莫名其妙的bug一直都没解决. 其实最重要的是log4j的作者自己也放弃了l ...

  9. 在android中配置 slf4j + log4j 日志记录框架

    需求: 在项目开发中,需要记录 操作日志 .起初自己写了个简单的日志记录文本写入到文本的方法,后来随着项目的膨胀,需要考虑更多的操作,开始考虑性能问题. 实现: 考虑使用 slf4j + log4j ...

随机推荐

  1. XBee模块户外通信距离测试

    Digi的XBee模块在市面上同类产品中,除了稳定性和可靠性最受推崇外,在距离测试中一般都比竞争对手的产品略胜一筹.户外测试需要注意避免模块自身以外的因素造成的测试结果不理想. 2.4G的模块有Zig ...

  2. 修改maven的源地址为阿里源

    在放maven的安装文件里,找到settings.xml,如下图所示 将默认的源地址改为阿里源,需要在settings.xml文件相应的位置上加上如下的一串:  <mirror> < ...

  3. 利用IO和File类实现拷贝文件目录问题

    /* 复制文件夹 参数 File src,File dest */ public static void copy(File src,File dest){ if (src.isDirectory() ...

  4. python模块:logging

    # Copyright 2001-2016 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and ...

  5. Unity打包提示UnityEditor.BuildPlayerWindow+BuildMethodException: Build failed with errors.错误

    不要将打包的输出路径设置为Assets文件夹下面即可,MD真坑 老外给出的解释: As you have noticed after you click build settings you are ...

  6. Git使用(一、TortoiseGit和Gitlab在Windows下的项目库创建和上传)

    介绍使用TortoiseGit初次创建并上传到gitlab项目库,转载请注明出处. 一.需要先安装git环境,并配置Git用户名及邮箱. 二.用PuTTYgen生成公约私钥对(鼠标画画).PuTTYg ...

  7. 申请的阿里云主机ubuntu系统无法显示中文

    系统ubuntu 16.04,中文的文件名也无法显示,因为中文包没安装,安装如下: sudo apt-get -y install language-pack-zh-hans sudo apt-get ...

  8. Solaris:你好奇的十件事

    想想你周围的人,看看他们正在使用的操作系统.绝大部分人的电脑都在用主流操作系统:Windows,MacOS,甚至是Ubuntu.当说到Solaris,Unix和BSD的时候,其他人还以为你说鸟语呢.除 ...

  9. Python开发——14.threading模块和multiprocess模块

    一.threading模块 1.threading类的两种创建方法 (1)直接创建 import time import threading def Hi(num): print("hell ...

  10. Eclipse搭建服务器,实现与Android的简单通信

    ---恢复内容开始--- 目标:实现客户端(Android App)与服务器(PC)的简单通信 相关准备:eclipse_mars.tomcat8.Android Studio 实现: 1.java环 ...