日志框架Nlog之异步记录

2024-05-08 08:32
文章标签 日志 记录 框架 异步 nlog

本文主要是介绍日志框架Nlog之异步记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     日志功能本来是一件非常好的事情,能帮助我们分析和解决很多问题。但是,如果让日志影响到性能,这就需要权衡一下了。没关系,本篇博客咱们不仅来解决这个问题,咱们更要眼见为实,带图带真相让你用的明明白白。


日志实现异步功能

           其实呢就一句话。。

           配置文件targets中配置async="true"即为异步。默认或写false都为同步。


准备

     接下来让我们开始测试。我还是用了上篇博客中将日志输出到数据库中的例子。不过为了效果明显,客户端的代码稍有改动,添加了循环。是这样的:

<span style="font-family:KaiTi_GB2312;font-size:18px;">using NLog;
using System;
using System.Text;namespace NLogToSql
{/// <summary>///用来测试 日志记录同步和异步-马丹妹-2015年9月25日/// </summary>class Program{private static Logger logger = LogManager.GetCurrentClassLogger();  //Logger对象代表与当前类相关联的日志消息的来源    static void Main(string[] args){for (int i = 0; i < 5000; i++){logger.Debug("同步异步测试!");//记录到数据库 }string time = System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fff");Console.WriteLine(time);//打印到控制台语句}  }
}
</span>


判断依据

    如果记录日志是同步的话,那程序必然是先执行1000次输出到数据库的语句,然后执行下面一句打印到控制台。而,如果程序是异步的话,那很有可能在日志记录到数据库还没有全部执行完的时候,下面打印到控制台的语句就已经执行了。也就是我们通过各个语句的标记时间就能看出是同步还是异步。


测试一

       默认不配置,或配置成async="false"  -----------同步情况。看图:

           

     我们发现打印到控制台的语句是在16秒571输出的,而循环写日志最后的时间是15秒213。   可见确是循环所有日志全部记录之后才打印到控制台的。


测试二

     配置成async="true"------------异步情况,看图:

          

     如此,一张图胜过千言万语。


最后,再给大家带一个福利。


      

      我查询了一秒钟记录日志的条数有700多。所以如果量不大的话,也基本是毫毫秒的事。如果对性能要求没有那么苛刻的话,使用同步记录还是没有任何影响的。当然,如果真的日志记录量非常大,采用 异步也是不错的选择。不过这时候,你要考虑到日志的记录时间可能就和你要记录的上下文中的语句执行时间有所不同咯。


      



这篇关于日志框架Nlog之异步记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969825

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各