C# 快速写入日志 不卡线程 生产者 消费者模式

2023-11-20

有这样一种场景需求,就是某个方法,对耗时要求很高,但是又要记录日志到数据库便于分析,由于访问数据库基本都要几十毫秒,可在方法里写入BlockingCollection,由另外的线程写入数据库。
可以看到,在我的机子上面,1ms写入了43条日志。

        public static BlockingCollection<LogModel> logQueue = new BlockingCollection<LogModel>(3000);

        public static void QuickLog(string log)
        {
            LogModel logModel = new LogModel();
            logModel.Log = log;
            logModel.Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
            logQueue.Add(logModel);
        }
        //在程序加载的时候,调用一下此方法
        public static void QuickLogToDatabase()
        {
            Task.Run(() =>
            {
                string sql;
                while (true)
                {
                    try
                    {
                        var logModel = logQueue.Take();
                        //以下是写入耗时日志的部分,由自己的具体情况而定
                        //sql = string.Format(Function.SQL.InsertLog, logModel.Log, logModel.Time);
                        //Function.Helper.MySQLHelper.ExecuteNonQuery(sql);
                    }
                    catch (Exception ex)
                    {
                        Thread.Sleep(1000);
                        //catch部分,可以写入本地的txt
                        //DebugLog("QuickLogToDatabase:" + ex.Message);
                    }

                }

            });
        }
        public class LogModel
        {
            public string Log { set; get; }
            public string Time { set; get; }
        }

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 快速写入日志 不卡线程 生产者 消费者模式 的相关文章

  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • Python基础知识点梳理

    本文简要梳理了Python基础知识的大体框架 目录 一 变量和赋值 二 分支和循环 1 分支结构 2 循环结构 三 数据结构 四 函数 lambda函数 匿名函数 五 面向对象 1 封装 2 继承 六 模块和包 一 变量和赋值 变量是编程语
  • Python 基于 opencv 车牌识别系统的研究与实现

    源码下载地址 https download csdn net download gdutxiaoxu 87419195 原理简介 车牌字符识别使用的算法是opencv的SVM opencv的SVM使用代码来自于opencv附带的sample
  • 数据湖--概念、特征、架构与案例概述

    一 什么是数据湖 数据湖是目前比较热的一个概念 许多企业都在构建或者计划构建自己的数据湖 但是在计划构建数据湖之前 搞清楚什么是数据湖 明确一个数据湖项目的基本组成 进而设计数据湖的基本架构 对于数据湖的构建至关重要 关于什么是数据湖 有如
  • 上传图片到七牛云

    public JSONObject uploadImgToQiniu RequestParam MultipartFile file HttpServletResponse response HttpServletRequest reque
  • 论文笔记: Masked Autoencoders Are Scalable Vision Learners

    1 整体思路 效仿BERT中MLM的思路 随机mask掉输入图像的部分patch 并重建这些被mask掉的patch 机器学习笔记 ELMO BERT UQI LIUWJ的博客 CSDN博客 模型结构是一个非对称的encoder decod
  • 生命在于折腾——SQL注入的实操(五)less21-25

    一 实操环境 1 操作系统 VMware虚拟机创建的win10系统 内存8GB 硬盘255GB 处理器AMD Ryzen 9 5900HX 2 操作项目 sql lib项目 本篇文章介绍关卡21 25 3 工具版本 phpstudy 8 1
  • 百度翻译接口获取过程

    记百度翻译接口获取过程 coding utf 8 usr bin env python 思路 进入到百度翻译 https fanyi baidu com 首先要找到返回数据的接口 打开f12 输入你要翻译的内容后能看到很多请求如图所示 进入
  • Qt播放音乐报错DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80070002 ()

    需求 在Qt中播放背景音乐 代码片段如下 1 pro添加组件 QT multimedia 2 使用 QMediaPlayer 对象实现播放音乐 循环播放背景音乐 void ClearApp playBG QMediaPlayer playe
  • Qt自定义图片按钮并设置方向

    Qt自定义图片按钮 设置方向 虽然Qt定义了很多很多控件 但是还是不能满足用户的需要 比如如果想使用ToolButton 需要带文字 又需要文字可以设定位置 显然就不行了 下面的代码就是一个简单的实现ToolButton功能 并且能够设置图
  • 【模拟电路】三极管做开关,各个电阻的作用

    下面介绍用NPN做开关来驱动蜂鸣器的用法 对各个电阻的用法的解释 图一 这个比较简单 R20是限流作用 R21也是限流作用 图二 相同的地方就不说了 不同的地方是在基极和发射极之间加了一个电阻 这个电阻主要有两个作用 作用一 防止三极管因为
  • 神经网络中FLOPs和MACs的计算(基于thop和fvcore.nn)

    以 输入为 1 1 200 3 的张量 卷积取 nn Conv2d 1 64 kernel size 8 1 stride 2 1 padding 0 0 为例 先计算输出的形状 公式为 H上为 200 0 8 2 1 97 W上依然是3
  • Python全栈开发【基础-03】编程语言的分类

    专栏介绍 本专栏为Python全栈开发系列文章 技术包括Python基础 函数 文件 面向对象 网络编程 并发编程 MySQL数据库 HTML JavaScript CSS JQuery bootstrap WSGI Django Flas
  • 阿里巴巴都害怕的区块链电商到底是什么?

    近日 区块链权威机构中国通信工业协会区块链专业委员会 CCIAPCB 发出倡议 联合各界将中共中央政治局10月24日集体学习区块链主席讲话日作为 区块链中国日 此次中央将区块链技术放在了国家战略层面高度上 让区块链一时间成了全民热点 特别是
  • 【python数据挖掘课程】二十七.基于SVM分类器的红酒数据分析

    这是 Python数据挖掘课程 系列文章 前面很多文章都讲解了分类 聚类算法 这篇文章主要讲解SVM分类算法 同时讲解如何读取TXT文件数据并进行数据分析及评价的过程 文章比较基础 希望对你有所帮助 提供些思路 也是自己教学的内容 推荐大家
  • TS装饰器

    一 定义 装饰器本质是一种函数 通过添加标注的方式 对数据 类 方法 属性 参数等 的功能进行增加或者修改 二 使用 准备工作 ts config json文件中 1 基础使用 装饰器名字 例子 function test target a
  • 《塞尔达传说:旷野之息》中设计元素的分析

    塞尔达传说 旷野之息 中设计元素的分析 0 写在前面 关于 塞尔达传说 旷野之息 是否属于中型游戏 检索许多资料后 有一种通识是 塞尔达传说 旷野之息 不属于3A级别游戏 显然也不属于小型游戏 因此我姑且认为它属于中型游戏 这也符合此篇的初
  • crypto-js md5加密和解密

    直接上代码 import CryptoJS from crypto js const encodeFactor zq87dopenf67eg 加密 export function encrypt txt var key CryptoJS e
  • 服务攻防-中间件安全&CVE复现&IIS&Apache&Tomcat&Nginx漏洞复现

    目录 一 导图 二 ISS漏洞 中间件介绍 gt 1 短文件 2 文件解析 3 HTTP SYS 4 cve 2017 7269 三 Nignx漏洞 中间件介绍 gt 1 后缀解析漏洞 2 cve 2013 4547 3 cve 2021
  • openstack平台搭建笔记(容器云)

    openstack平台搭建笔记 容器云 一 根据要求准备好配置环境 节点IP 角色 备注 192 168 100 30 Master Kubernetes 集群 master 节点 Harbor 仓库节点 192 168 100 31 Wo
  • C# 快速写入日志 不卡线程 生产者 消费者模式

    有这样一种场景需求 就是某个方法 对耗时要求很高 但是又要记录日志到数据库便于分析 由于访问数据库基本都要几十毫秒 可在方法里写入BlockingCollection 由另外的线程写入数据库 可以看到 在我的机子上面 1ms写入了43条日志