当前位置: 首页 > news >正文

工业园网站建设百度网盟推广怎么做

工业园网站建设,百度网盟推广怎么做,百度上广告怎么搞上去的,珠海网站制作费用C语言单例模式-实现高性能日志管理器 代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。 日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。 在主函数…

C语言单例模式-实现高性能日志管理器

代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。
日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。
在主函数中,设置了日志级别为DEBUG,并写入了5条不同级别的日志,最后关闭日志文件、销毁互斥锁、释放内存。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <pthread.h>// 日志级别枚举
typedef enum {LOG_LEVEL_DEBUG,LOG_LEVEL_INFO,LOG_LEVEL_WARN,LOG_LEVEL_ERROR,LOG_LEVEL_FATAL
} LogLevel;// 日志管理器结构体
typedef struct {FILE* file; // 日志文件指针LogLevel level; // 日志级别pthread_mutex_t lock; // 互斥锁
} LogManager;// 日志管理器单例结构体
typedef struct {LogManager* manager; // 日志管理器指针
} LogManagerSingleton;static LogManagerSingleton* instance = NULL; // 日志管理器单例对象指针// 获取当前时间字符串函数
void get_current_time_string(char* buffer, size_t size) {time_t now = time(NULL);struct tm* tm = localtime(&now);strftime(buffer, size, "%Y-%m-%d %H:%M:%S", tm);
}// 写日志函数
void write_log(LogLevel level, const char* message) {LogManager* manager = instance->manager;if (level < manager->level) {return;}char time_str[20];get_current_time_string(time_str, sizeof(time_str));pthread_mutex_lock(&manager->lock);fprintf(manager->file, "[%s] ", time_str);switch (level) {case LOG_LEVEL_DEBUG:fprintf(manager->file, "[DEBUG] ");break;case LOG_LEVEL_INFO:fprintf(manager->file, "[INFO] ");break;case LOG_LEVEL_WARN:fprintf(manager->file, "[WARN] ");break;case LOG_LEVEL_ERROR:fprintf(manager->file, "[ERROR] ");break;case LOG_LEVEL_FATAL:fprintf(manager->file, "[FATAL] ");break;}fprintf(manager->file, "%s\n", message);fflush(manager->file);	// 将写缓存区立即写入磁盘。pthread_mutex_unlock(&manager->lock);
}// 设置日志级别函数
void set_log_level(LogLevel level) {instance->manager->level = level;
}init_instance() {instance = (LogManagerSingleton*)malloc(sizeof(LogManagerSingleton));instance->manager = (LogManager*)malloc(sizeof(LogManager));instance->manager->file = fopen("log.txt", "a");instance->manager->level = LOG_LEVEL_INFO;	// 日志默认级别INFOpthread_mutex_init(&instance->manager->lock, NULL);
}// 获取日志管理器单例对象函数
LogManager* get_log_manager_instance() {return instance->manager;
}int main() {init_instance();	/* 程序一开始,就必须执行。不然,与懒汉式无较大差异。 */LogManager* manager = get_log_manager_instance(); // 获取日志管理器单例对象set_log_level(LOG_LEVEL_DEBUG); // 设置日志级别为DEBUGwrite_log(LOG_LEVEL_DEBUG, "debug message"); // 写DEBUG级别日志write_log(LOG_LEVEL_INFO, "info message"); // 写INFO级别日志write_log(LOG_LEVEL_WARN, "warn message"); // 写WARN级别日志write_log(LOG_LEVEL_ERROR, "error message"); // 写ERROR级别日志write_log(LOG_LEVEL_FATAL, "fatal message"); // 写FATAL级别日志fclose(manager->file); // 关闭日志文件pthread_mutex_destroy(&manager->lock); // 销毁互斥锁free(manager); // 释放日志管理器内存free(instance); // 释放日志管理器单例对象内存return 0;
}/*
该示例代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。
日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。
在主函数中,设置了日志级别为DEBUG,并写入了5条不同级别的日志,最后关闭日志文件、销毁互斥锁、释放内存。
*/
http://www.shuangfujiaoyu.com/news/47343.html

相关文章:

  • 网站建设合同简单建个网站需要多少钱?
  • 免费空间分享揭阳百度快照优化排名
  • 杭州网站制作推荐怎么优化自己公司的网站
  • 网站建设靠什么赚钱北京网络营销公司排名
  • 公司网站维护如何操作电商引流推广方法
  • 汕头网页怎么制作武汉seo公司哪家好
  • php+mysql网站开发全程实例.pdf兰州网络推广电话
  • 网站建设费的税率中关村在线app
  • wordpress使用QQ头像山东seo网页优化外包
  • 嘉兴做网站优化的公司销售课程培训视频教程
  • 深圳企业推广网站排名螺蛳粉营销策划方案
  • cnnic网站百度客服在线咨询电话
  • 网站怎么做站长统计网站策划书模板范文
  • 金山快盘为什么停止服务潍坊seo建站
  • wordpress分类的feed免费下载优化大师
  • 站长统计 网站统计站长工具网站查询
  • 专门做网站代购的盈利路子手机seo关键词优化
  • 闵行做网站综合查询
  • 官方网站重要性百度怎么创建自己的网站
  • wordpress首页多图片昆明网站seo优化
  • 做北美市场的外贸网站河南郑州网站顾问
  • wordpress主题演示站小程序开发平台有哪些
  • 嘉善做网站郑州网络推广代理顾问
  • 网站建设模板制作是什么意思注册商标查询官网入口
  • 二级域名网站有哪些网络营销实施方案
  • 网页版qq游戏大厅网站优化排名的方法
  • 网站搬家怎么做网络测试
  • 之梦网站怎么做seo企业营销策划书范文
  • 营销型网站建设亏1必应搜索引擎
  • 郑州建立一个网站需要哪些百度上海总部