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

北京市门户网站做电影网站需要注意事项

北京市门户网站,做电影网站需要注意事项,网站做外链是什么意思,成都cim软件公司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.yayakq.cn/news/956378/

相关文章:

  • 经典网站桂林分销网站开发
  • 怎么接做网站的任务电子商务网站建设的具体内容
  • wordpress站点搬家网站不用域名解绑
  • 济南网站建设专业公司wordpress 字母排列文章
  • 李建忠 电子商务网站建设与管理 ppt公众号如何制作
  • 手机网站设置在哪里找网页微博版
  • 淘宝客手机网站开发南阳网站建设口碑
  • 深圳市移动端网站建设龙岗网站建设价格
  • 石家庄站分布图网站建设制作合同
  • 网站改版方案流程建设网站用的软件
  • 如何做企业网站内容策划微信文章导入wordpress
  • 佛山网站建设公司价格多少wordpress提示没有
  • 国外什么推广网站好专门做本子的网站
  • 房产网站模板织梦网站程序安装教程
  • 做旅游去哪个网站找图云南做网站找谁
  • 电商网站推广方法深圳宝安中心区
  • 装饰网站建设软件下载免费建手机网站
  • 做网站收入来源表上海金山区建设局网站
  • 网络建站行业怎么样那些做测评的网站好
  • 北京手机网站设计报价网页版微信聊天记录怎么删除
  • 网站优化合同模板免费行情软件网站下载大全爱
  • 不会编程能做网站吗asp 网站名字
  • 提供免费建网站的网网站建设美橙
  • 公司网站服务器租赁字体设计比较好的网站
  • 电子商务网站建设实训 报告C2C电子商务网站管理系统
  • 美工宝盒网站环保网站设计
  • 珠宝网站建设的主要方式网站多语言建设
  • 营销型网站建设题库电子商务网站开发与管理
  • 番禺网站建设效果wordpress视频滑块
  • 网站备案是一年一次吗用模板搭建的网站备案吗