【cdk的使用】C语言 一个仅用200行代码实现的logger系统 使用

2023-10-29

Github地址: https://github.com/wujin1989/cdk

经常有人说,一个好的代码,不需要记录太多的log。确实,我信了,这也导致cdk也是基于这点出发的,所以cdk的logger系统很简单,仅仅200行左右代码。但是简单并不代表阉割,必须的功能都有。
目前cdk logger支持:
- 同步log
- 异步log
- 输出到文件
- 输出到终端

如何使用cdk打印log:

#include "cdk.h"

int main(void) {

	//使用同步打印log的方式输出到终端
	cdk_logger_init(NULL, false);

	//使用异步打印log的方式输出到终端
	//cdk_logger_init(NULL, true);

	//使用同步打印log的方式输出到文件
	//cdk_logger_init("demo.log", false);

	//使用异步打印log的方式输出到文件
	//cdk_logger_init("demo.log", true);

	cdk_logi("cdk is a minimal cross-platform c language development kit.\n");

	cdk_logger_destroy();

	return 0;
}

对于同步,异步log,一般如果日志信息不是很重要的话,可以选择异步,否则使用同步log,避免log丢失。

怎么样?是不是很简单。快来尝试下吧!

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

【cdk的使用】C语言 一个仅用200行代码实现的logger系统 使用 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • sqli-labs靶场第一关

    开始第一关之前 我们先在火狐上下载一个插件hackbar 点火狐右上角的菜单 找到扩展和主题 在扩展中搜索hackbar 点击下载第一个hackbar插件 下载完成之后 我们开始sql靶场第一关的解析过程 下载hackbar主要是为了后续操
  • H.264 视频的 RTP 载荷格式

    本文是 IETF 的规范 RFC 6184 的一部分的翻译 该规范 地址 翻译这份文档 主要是为了编写一段用 RTP 传输 H 264 流的代码 本想在网上找一些文章完成任务了事的 但由于个人之前音视频编解码相关的知识比较匮乏 网上找的文章
  • 防网关病毒的知识

    1 什么是恶意软件 恶意软件官方的一个定义 恶意软件 Malware 从 恶意 malicious 和 软件 software 这两个词合并而来 是一个通用术语 可以指代病毒 蠕虫 特洛伊木马 勒索软件 间谍软件 广告软件和其他类型的有害软
  • 怎么引css样式,jsp怎么引入css样式?

    JSP页面引入CSS样式有三种方法 且其优先级不同 具体如下 外部样式 内嵌样式 行内样式 优先级依次增高 下面给大家具体介绍一下 1 外部样式 jsp可以在link标签中使用href属性引入css文件路径 首先把写好的css样式表内容存为
  • Linux里的2>&1究竟是什么

    我们在Linux下经常会碰到nohup command gt dev null 2 gt 1 这样形式的命令 首先我们把这条命令大概分解下首先就是一个nohup表示当前用户和系统的回话下的进城忽略响应HUP消息 是把该命令以后台的job的形
  • 德勤与Attest合作,开发政府级区块链身份管理系统

    11月5日报道 四大会计师事务所之一的德勤 Deloitte 与身份管理公司Attest合作 开发了基于区块链的政府级数字身份系统 区块链开发 位于芝加哥的身份管理公司Attest提供了一个共享的身份平台 客户可以在这里进行交易 政府客户可
  • QT 线程常见需要注意的问题

    C C 程序都是从main 函数开始执行的 main 函数其实就是主进程的入口 main 函数退出了 则主进程退出 整个进程也就结束了 而对于使用Qthread创建的进程而言 run 函数则是新线程的入口 run 函数退出 意味着线程的终止
  • react-hooks 在不编写 class 的情况下使用 state 以及其他的 React 特性

    文章目录 hooks 一 hook 1 useState 2 useEffect 3 useLayoutEffect 4 自定义Hook 5 useRef 6 useImperativeHandle 7 useContext 8 useRe
  • led灯条串联图_单片机入门教学-LED驱动电路

    欢迎关注 嵌入式干货铺子 每日更新干货教程 做单片机开发 看不懂电路图是万万不能的 分析电路原理图是一个合格的单片机工程师必须掌握的 后续干货铺子会做一个分析电路图的系列教程 从最基本的电路开始 手把手掌握单片机电路的设计 欢迎大家关注 接
  • Java 基本数据类型(四类八种)

    基本数据类型 四类八种 整数类 byte short int long 浮点类 float double 字符类 char 布尔型 boolean 除此之外即为引用类数据类型 一 整数类 不同类型表示不同长度 1 Byte 使用1个字节存储
  • 共识算法 —— PoA

    定义 PoA的全称是 Proof Of Authority 权威证明 网上有些文章全称写得是 Proof Of Activity 个人感觉明显不对 大家自行鉴别 最早提出人是Ethereum 以太坊前技术专家Gavin Wood 在2017
  • hive小文件过多问题解决方法

    小文件产生原因 hive 中的小文件肯定是向 hive 表中导入数据时产生 所以先看下向 hive 中导入数据的几种方式 直接向表中插入数据 insert into table A values 1 zhangsan 88 2 lisi 6
  • 如此优雅,4款 Python 自动数据分析神器真香啊

    我们做数据分析 在第一次拿到数据集的时候 一般会用统计学或可视化方法来了解原始数据 比如了解列数 行数 取值分布 缺失值 列之间的相关关系等等 这个过程我们叫做 EDA Exploratory Data Analysis 探索性数据分析 用
  • 一文看懂什么是区块链分叉

    一些链上资产采用的工作量证明机制 就是让矿工互相竞争求解一个数学题 谁先解出来了 他就大喊一声 我的工作量证明成功了 你们快来看 全体矿工就都过来把那一页目抄写一份 贴在自己账本的最后面 然后又开始新的记账过程 在这个过程中 经常会出现这样
  • 通俗易懂----C语言时间日期与时间戳互相转化

    前言 如果你也对时间转化的高效代码而苦恼 不妨看看以下内容 一定会给你带来良好的体验和启迪 1 时间戳含义 1 1时间戳是衡量时间的一种标准 用来特定电子数据提供一个绑定时间戳 从而有效地证明该电子数据的产生时间及未被修改 常用于保 防伪等
  • 前端小作业~基础知识点串接

    包子们 这次网页虽然不难 但是扣细节的地方多啊 都是最近学的零零散散的知识的拼接与整合 也是尽力而为了 搞了将近四个小时
  • R语言常用快捷键1

    快捷键 1赋值符号 lt alt 2管道符 gt Ctrl Shift M 3注释 Ctrl Shift C 4默认颜色 5折叠所有代码 alt o 6展开所有代码 shift alt o 7添加代码块 Ctrl alt i 1赋值符号 l
  • [从零学习汇编语言] - 转移指令进阶

    文章目录 前言 回顾 1 转移指令原理 2 已接触过的操作符 3 寄存器回顾 通用数据处理寄存器 指针寄存器 变址寄存器 段地址寄存器 其他寄存器 一 ret及retf 1 1 ret指令 1 2 retf指令 1 3 小练习 二 Call
  • Clannad【2018四川省赛】【AC自动机 + DP】

    题目链接 第十届四川省赛C题 挺好的一道题 就是要做一个last优化 每次的last要返回到之前的有值节点 也就是单词的尾的对应节点 然后就不会超时了 呜呜呜 之前一直超时 以为是初始化的memset 问题 以前被卡过memset 然后发现
  • 【cdk的使用】C语言 一个仅用200行代码实现的logger系统 使用

    Github地址 https github com wujin1989 cdk 经常有人说 一个好的代码 不需要记录太多的log 确实 我信了 这也导致cdk也是基于这点出发的 所以cdk的logger系统很简单 仅仅200行左右代码 但是