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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介:

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
1月前
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
107 6
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
109 3
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
9天前
|
消息中间件 监控 数据可视化
基于.NET开源、功能强大且灵活的工作流引擎框架
基于.NET开源、功能强大且灵活的工作流引擎框架
|
9天前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
9天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
9天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
9天前
|
网络协议 网络安全 Apache
一个整合性、功能丰富的.NET网络通信框架
一个整合性、功能丰富的.NET网络通信框架
|
1月前
|
设计模式 前端开发 C#
使用 Prism 框架实现导航.NET 6.0 + WPF
使用 Prism 框架实现导航.NET 6.0 + WPF
87 10

热门文章

最新文章

下一篇
无影云桌面