NLog是什么?

这里还是简单介绍一下吧,为了让小白也知道。NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET Core。NLog可以通过简单地配置就可以可以很方便的写入多个日志仓库中(数据库,文件,控制台)。

NLog在Net Core中怎么用啊?

  1. 用之前你得新建一个asp.net core项目吧。这里以net core api为例吧。如下图所示是博主刚刚创建的net core api项目。

  1. 建好项目之后干什么呢、当然得添加引用了。你可以随心所欲的使用Nuget或者命令进行安装

    1. Install-Package NLog -Version 4.6.5
    2. Install-Package NLog.Web.AspNetCore -Version 4.8.4
    1. Install-Package MySql.Data -Version 8.0.16
  2. 上面说了,NLog只需要简单地修改配置就可以使用,那接下来就是新建一个NLog配置文件了。你可以通过Nuget或者程序包控制台进行安装,也可以自己新建一个NLog.config文件。这里还是通过程序包控制台进行安装吧

    安装后看到项目目录多了一个NLog.config文件。这里需要注意,右键设置一下这个NLog.config的属性为“始终复制”

  3. 打开nlog.config文件,看看里面的结构,发现有两个重要节点,一个是声明目标 一个是声明规则。如下图所示,我配置了一个写入文件,一个写入mysql的target.并定义了不同的写入规则,大家可以根据实际需要参照着自定义规则以及target.

    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="Off" internalLogFile="nlog.txt">
    7. <targets async="true"><!--async设置同步异步 true:异步 false:同步-->
    8. <target name="file" xsi:type="File"
    9. layout="${longdate} ${logger} ${message}${exception:format=ToString}"
    10. fileName="${basedir}/logs/nlog.txt"
    11. keepFileOpen="true"
    12. encoding="utf-8" />
    13. <target xsi:type="Null" name="blackhole" />
    14. <target name="database" xsi:type="Database"
    15. dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"
    16. connectionString="server=127.0.0.1;Database=数据库名;user id=root;password=111111;SslMode=none"
    17. >
    18. <!--
    19. CREATE TABLE `log` (
    20. `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    21. `Application` varchar(50) DEFAULT NULL,
    22. `Logged` datetime DEFAULT NULL,
    23. `Level` varchar(50) DEFAULT NULL,
    24. `Message` varchar(512) DEFAULT NULL,
    25. `Logger` varchar(250) DEFAULT NULL,
    26. `Callsite` varchar(512) DEFAULT NULL,
    27. `Exception` varchar(512) DEFAULT NULL,
    28. `Title` varchar(512) DEFAULT NULL,
    29. PRIMARY KEY (`Id`)
    30. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    31. -->
    32. <commandText>
    33. insert into logs (
    34. Application, Logged, Level, Message,
    35. Logger, CallSite, Exception,Title
    36. ) values (
    37. @Application, @Logged, @Level, @Message,
    38. @Logger, @Callsite, @Exception,@title
    39. );
    40. </commandText>
    41. <parameter name="@application" layout="NLogTestDemo" />
    42. <parameter name="@logged" layout="${date}" />
    43. <parameter name="@level" layout="${level}" />
    44. <parameter name="@message" layout="${message}" />
    45. <parameter name="@logger" layout="${logger}" />
    46. <parameter name="@callSite" layout="${callsite:filename=true}" />
    47. <parameter name="@exception" layout="${exception:tostring}" />
    48. <parameter name="@title" layout="${event-context:item=title}" /><!--自定义字段-->
    49. </target>
    50.  
    51. </targets>
    52.  
    53. <rules>
    54. <logger name="*" minlevel="Debug" writeTo="file" />
    55. <!--Skip Microsoft logs and so log only own logs-->
    56. <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    57. <logger name="*" minlevel="Debug" writeTo="database" />
    58. </rules>
    59. </nlog>
    1.  
  4. 上面的代码中我是以写入mysql为例进行的NLog配置。下面就可以进行简单地使用了。首先需要在。首先在Startup中的Configure中来加入中间件:

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

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

    1. [Route("api/[controller]")]
    2. [ApiController]
    3. public class ValuesController : ControllerBase
    4. {
    5. private readonly Logger nlog = LogManager.GetCurrentClassLogger(); //获得日志实;
    6. // GET api/values
    7. [HttpGet]
    8. public ActionResult<IEnumerable<string>> Get()
    9. {
    10.  
    11. //1、没有加自定义字段测试
    12. //nlog.Log(LogLevel.Debug, $"测试Debug日志");
    13. //nlog.Log(LogLevel.Info, $"测试Info日志");
    14. //try
    15. //{
    16. // throw new Exception($"故意抛出的异常");
    17. //}
    18. //catch (Exception ex)
    19. //{
    20.  
    21. // nlog.Log(LogLevel.Error, ex, $"异常的额外信息");
    22. //}
    23.  
    24. //2、添加自定义字段测试
    25. //LogEventInfo log = new LogEventInfo();
    26. //log.Properties["title"] = "测试吧";
    27. //log.Level = LogLevel.Debug;
    28. //log.Message = "测试Debug";
    29. //nlog.Log(log);

    //3、测试异步同步
                 //设置<targets async="true"> true:异步 false:同步
                 //Stopwatch sw = new Stopwatch();
                 //sw.Restart();
                 //for (int i = 0; i < 5000; i++)
                 //{
                 // Manager.LogManager.Debug(new NLogInfo { message=$"异步测试---{i}" });//记录到数据库
                 //}
                 //sw.Stop();
                 //var s = sw.ElapsedMilliseconds;  耗时:600ms

    1. return new string[] { "value1", "value2" };
    2. }
    3.  
    4. }
    1.  
  7. 下面运行起来项目,然到数据库里面就可以看到记录的日志信息如下所示:

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

原帖:https://blog.csdn.net/qq_42564846/article/details/81407097

Net Core 2.1 日志记录框架NLog+Mysql配置的更多相关文章

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

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

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

    Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...

  3. (14)ASP.NET Core 中的日志记录

    1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API.本文介绍了如何将日志记录API与内置提供应用程序一起使用. 2.添加日志提供程序 日志记录提供应用程序 ...

  4. ASP.NET Core 异常处理与日志记录

    1. ASP.NET Core 异常处理与日志记录 1.1. 异常处理 1.1.1. 异常产生的原因及处理 1.1.2. ASP.NET Core中启动开发人员异常页面 1.2. 日志记录 1.2.1 ...

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

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

  6. 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 重点: 实现多级子目录的压缩, ...

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

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

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

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

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

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

随机推荐

  1. 正态分布(normal distribution)与偏态分布(skewed distribution)

    存在正太分布的概念,自然也少不了偏态分布. 正态分布(normal distribution) 偏态分布(skewed distribution) 左偏态:left skewed distributi ...

  2. React学习(1)——constructor

    constructor(props) { super(props); this.state = { orderNo: "001", wid: 6 }; } constructor: ...

  3. WPF 四种尺寸单位

    原文:WPF 四种尺寸单位 像素 px 默认单位可以省略 厘米cm 英寸 in 点 pt 1in = 96px 1cm=96/2.42px 1pt=96/72px

  4. 在react jsx中使用if判断

    在react jsx中如果使用if判断,需要这样做 var loginButton; if (loggedIn) { loginButton = <LogoutButton />; } e ...

  5. socket 主机地址相关的函数

    #include <arpa/inet.h> int inet_aton (const char *name, struct in_addr *addr) 将ipv4地址从数字点的形式转化 ...

  6. jquery表单过滤器

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. Android Camera2 拍照(三)——切换摄像头,延时拍摄和闪光模式

    原文:Android Camera2 拍照(三)--切换摄像头,延时拍摄和闪光模式 一.切换摄像头 在前后摄像头之间切换,首先需要关闭之前打开的摄像头,关闭preview,之后重新打开新的摄像头,重新 ...

  8. ubuntu16.04安装搜狗输入法

    安装完Ubuntu 16.04后,要更换为国内的软件源: Ali-OSM Alibaba Open Source Mirror Site Home About Join Us Ubuntu 1.软件包 ...

  9. Silverlight DataGrid自适应数据

    silverlight的DataGrid如果改成fill模式 那么当数据超长也不会出现横向滚动条 如果改成按单元格模式 如果数据较短又会出现空白的地方 所以我自己写了个算法 目前实现了以list为数据 ...

  10. WinForm DataGridView制作表格

    1.  将背景颜色改为白色 this.dataGridView1.BackgroundColor = Color.White; 或 2. 禁止启用添加,启用编辑,启用删除 this.dataGridV ...