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

重庆建站服务商信息网查询

重庆建站服务商,信息网查询,高德导航怎么看街景地图,不用写代码做的网站日志对于一些大一些的项目来说#xff0c;可以在项目运行出现问题时更好的帮助 项目的维护人员快速的定位到问题出现的地方并且知道出现问题的原因#xff0c; 并且日志也可以帮助程序员很好的进行项目的Debug#xff0c;那么今天我就来实 现一个C编写的一个简单的日志功能。…日志对于一些大一些的项目来说可以在项目运行出现问题时更好的帮助 项目的维护人员快速的定位到问题出现的地方并且知道出现问题的原因 并且日志也可以帮助程序员很好的进行项目的Debug那么今天我就来实 现一个C编写的一个简单的日志功能。1. 简单功能的实现 我的第一步就是先写出一个大致的框架能用就行 现在我们要让它输出消息对于日志来说一个日志一定要有日志的等级日志的时间日志的内容前两点比较容易日志的等级可以使用枚举来表示而日志的时间也很容易对于日志的内容来说可以实现的更加多元化一点这一点可以由用户输出自己想输出的内容所以这里使用了可变参数列表 有人看到这个会不会很熟悉C标准库中的printf好像参数就长这样 我就是想用这样的方式来让用户输入自己想输出的格式然后附带对应参数输出由于输出的参数的个数和类型都不确定所以我们使用可变参数来实现用户的传参。有人就问了那这个可变参数中的参数怎么拿到呢难道我们就这样给printf传过去吗 显然是不行的所以这里就有必要介绍如何获取到可变参数了。 可变参数 C语言针对可变参数做了几个宏以便于用户能够获取到可变参数里的参数 其中关于携带可变参数的函数该函数的可变参数前必须有一个明确类型的参数 原因就是在调用函数之后函数开始运行前要进行压栈以及函数参数的加载而函数参数的加载从右往左的也就是说可变参数前的参数是为了能够方便定位到可变参数的位置。 对于获取可变参数中的参数我们首先需要一个va_list类型的变量其实就是一个指针 然后使用va_start对该变量进行初始化这个宏的第一个参数就是arg第二个参数就是可变参数前面的参数通过va_arg根据顺序和参数类型拿到参数这个顺序和类型都是用户已知的最后使用va_end对arg进行销毁其实就是置空 而对于实现到日志上的可变参数反正我们对这些参数是能够打印出来就行了所以这里再介绍一批接口 可以看到C标准库种有专门的针对va_list变量的打印措施所以对于上面的代码我们也可以这么写 有了上面的准备工作我们就可以继续编写日志代码了 但是我们发现我们无法识别到任务的等级是什么只是一个数字并且我们的时间是一个时间戳不方便进行观察所以这里再次做出优化 关于时间这里再次介绍一个接口 这个接口可以将时间戳转化成一个对应年月日时分秒的结构体 这样这个日志打印出来就比较直观了。 这样的日志是打印在屏幕上但是大多数情况日志是存储在文件中的所以我们的日志要支持自定义式的让用户来决定日志打印到哪里而打印到文件中可能是一个文件也可能是根据日志等级来分开打印所以我们的日志打印又要支持多文件打印也要支持单个文件的打印所以我们的Log类中要添加两个字段打印格式目标文件 那么现在我们又要对日志输出函数进行更深层次的封装了 那么关于向文件中写日志要为文件定制一个名字这里采用. 日志等级为后缀如果是向一个文件中打印的话后缀就是.all 现在我们就可以以三种方式输出日志了 屏幕 单个文件 多个文件 2. 优化 我们看到我们的代码大部分使用的都是C中的string但是使用的接口大多都是C语言的接口导致输出字符串时都得使用c_str()来转换这个接口打起来可能有些麻烦所以我们宏定义一下 上面展示宏使用的这个snprintf中的内容优有点难看这里也需要优化一下 我们也可以利用仿函数来将我们日志接口的使用来变得更简单 但是我们发现可变参数并不能够在多个函数上进行传递所以我们这里依旧利用va_list来实现传参 这样我们在使用日志接口时就可以是这样 并将LogMessage函数置为私有我们也知道日志功能在一个项目中输出的格式应该是一致的所以日志对象应该是只有一个所以 至此我们的日志的使用起来就是这样 而我们想要修改日志的输出格式只需要修改类内Conf的全局对象就可以 至此一个简单的日志功能就实现了。
http://www.zqtcl.cn/news/899788/

相关文章:

  • 网站开发中的qq登录网站地图有什么作用
  • 南宁小程序开发网站建设公司网络营销方案设计范文
  • 电脑做网站主机空间哈尔滨人才招聘信息网
  • 无锡网站建设制作设计wordpress news list
  • 专业建站教程青海 网站开发 图灵
  • 济南网站公司哪家好中国建设银行电脑版
  • 企业网站建设定制网站建设成功案例怎么写
  • 一个网站做数据维护3天正常吗做sgs认证公司网站
  • 免费网络短剧网站摄影素材库网站
  • 如何做竞价网站数据监控网站建设企业的市场分析
  • 电脑做网站主机空间软件开发工作岗位
  • 计算机多媒体辅助教学网站开发响应式网站建设精英
  • 免费网站空间怎么做网站主持人
  • 开源建站系统有哪些网站信息化建设合同
  • 昆明云南微网站淄博专业网站建设
  • 古典网站源码海南app开发
  • 自己做网站前期困难吗怎么早网站上放广告
  • 建设银行招标网站南昌网站建设公司信息
  • 网站建设与管理专业介绍湖南长沙邮政编码
  • 社区论坛系统免费开源seo网站诊断报告
  • 网站LOGO透明底色PNG格式怎么做的开发一款游戏需要多少资金
  • 网站推广营销策略北京东直门网站建设
  • 制作公司网站需要购买域名和服务器吗聊城做企业网站
  • 大连网站建设价格低做校招的网站有哪些
  • 电脑端网站和手机网站区别做的好的营销型网站有哪些内容
  • 长沙市做网站网站建设 全是乱码
  • ps做网站原形系统学做网站
  • 接网站 建设wordpress 打开慢 google
  • wordpress 移动 建站网站前台如何做访问量显示
  • 公司做网站买域名之后做什么打鱼网站开发