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的配置修改成如下所示。我写的只是参考,大家可以自由发挥:

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

    这里大家可能会问,为什么没有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. zabbix3.0监控Windows服务器

    我们下载后,解压开始有多个文件: conf目录存放是agent配置文件bin文件存放windows下32位和64位安装程序 找到conf下的配置文件 zabbix_agentd.win.conf ,修 ...

  2. Maven学习 九 maven热部署

    第一步:配置tomcat的manager-script角色 点击tomcat的默认项目root的欢迎页面的Manager App 刚开始是没有用户名与和密码的,直接点击取消 出现如下的一张图片,图片中 ...

  3. c语言基础课第一次作业

    1)大学和高中最大的不同是没有人天天看着你,请看大学理想的师生关系是?有何感想? 通过阅读邹欣老师的博客,了解到了老师心中理想的师生关系是(健身教练与健身学员).在初中,高中我们一直都是填鸭式教育,像 ...

  4. 20175316盛茂淞 2018-2019-2 《Java程序设计》第9周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第9周学习总结 教材学习内容总结 下载安装MySQL数据库管理系统. 学习<Java程序设计>第十一章MyS ...

  5. KIDS采购销售管理系统

    {KIDS采购销售管理系统} 软件项目总结报告 编号:-{kpss}-CLOSUREREPORT 版本:1.0 变更记录 1 项目信息 2 项目说明 [本项目主要用于母婴店人事管理,采购管理,商品管理 ...

  6. abaqus的umat在vs中debug调试

    配置参考:https://www.jishulink.com/content/post/333909 常见错误:http://blog.sina.com.cn/s/blog_6116bc050100e ...

  7. 线程中的setDaemon方法

    setDaemon方法必须在start方法前定义.t1.setDaemon(True),该语句的意思是:将主线程A设置为子线程t1的守护线程.也就是在执行程序时,t1会随着主线程A的退出而退出,不论t ...

  8. 神经网络参数与TensorFlow变量

    在TensorFlow中变量的作用是保存和更新神经网络中的参数,需要给变量指定初始值,如下声明一个2x3矩阵变量 weights =tf.Variable(tf.random_normal([2,3] ...

  9. Python开发——8.模块

    一.模块 1.模块 (1)定义:一个.py文件就是一个模块 (2)原因:为了防止程序代码越来越长,对函数进行分组放到不同的文件夹里. (3)优点:提高代码的可维护性:模块编写完毕可以被别人引用,也可以 ...

  10. SecureCRT两步验证自动登录脚本

    简介 用于解决 Google Authenticator 的两步验证登录.涉及到密码,不建议脚本保存到公共环境. 安装oathtool Mac $ brew install oath-toolkit ...