首页  >   经验  >   日志技术的问题总结和完整改进方案(单线程、多线程、子线程、定时器、队列的运用)

日志技术的问题总结和完整改进方案(单线程、多线程、子线程、定时器、队列的运用)

codexia 2019-04-08 14:38:29 455
日志   线程   定时器   队列  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介打日志是写程序不可缺少的一部分,一个程序在上线运行后,通过日志监控运行状态是最为常见的手段了。而打日志存在的问题和改进方案,这里给你一个完整的思路说明,让你自己写的日志功能也一样很稳健强大。
感谢 阿里云 对本站(本站由阿里云高性能服务器搭建)的赞助支持,本站推荐 →高性能云服务器2折起优惠由此进←↓
高性能云服务器2折起
秒后广告自动消失...会员无广告。点击可关闭广告。

    在讨论主线程、多(子)线程、定时器、队列的运用之前,我们先来看使用的一个场景,即:

        在程序的运行过程中,我们需要知道程序运行的各个状态,想知道是否按照预期在运行了,我们需要一种方法得知。如果是控制台程序,我们打印到屏幕即可。如果是后台程序,没有办法打印到屏幕,那么我们一般就需要打日志了。打日志也就是将一些信息写入到日志文件里,并没有什么复杂的。一些框架可能会提供一些日志工具,就不用我们自己去写打印日志的代码了。但是如果自己写框架呢?或者框架并没有提供呢?那么我们需要自己写打日志的代码,也就是包装一个写文件的函数而已。

    所以我们的应用场景之一就是打日志,我们就这个场景来说一下主线程、多(子)线程、定时器、队列的运用。

    我们的程序需要不间断的运行,我们还需要不间断的打日志记录运行的状态,方便随时查看或者崩溃后查看分析。问题来了,我们的程序可能有bug导致崩溃,那么日志就是为了记录这种问题,好让我们分析程序崩溃的原因的。所以打日志是不能影响到程序正常运行的,更不能因为打日志出现bug导致程序崩溃了。现实的情况是,我们打日志因为一些地方没有处理好,经常出现崩溃,进而把程序牵连进来了。去掉日志也不好,没有日志记录,程序一旦崩溃,我们没有任何日志可查。当然其他手段不再这里讨论。比如Linux下可以有coredump文件,可以在C++技术网的精品专题的“coredump”专题了解相关的操作。

    那么我们要做的就是把打日志的功能做好做稳。下面看看两种通常使用打日志的具体场景。

1.单(主)线程打日志

    使用主线程的单线程打日志,意味着你的程序仅在主线程打日志,要么是单线程进程,要么是多线程进程但仅仅是主线程打了日志。通常情况下,新手程序员一般就是这种方式。

    写好一个打日志的函数,然后就到处在用了。

    表面看上去并没有什么问题。仔细想想,针对前面的场景,这种方式是存在极大的隐患的。我们的程序就一个线程或者主线程里直接打日志。打日志是一个辅助的操作,千万不能影响主程序的运行的。但是我们程序就一个主线程,而打日志只在主线程里进行,如果是线程自身崩溃,那么我们的日志刚好起到可以分析的作用,而如果因为日志崩溃进而导致主程序崩溃,那就得不偿失了。

    也就是说,直接在主线程里进行日志操作,是非常危险的操作。在写demo程序的时候是没有问题的,如果是真正运行的程序,是万万不能的。这个不是夸夸其谈。我之前开发的服务

登陆系统,查看更多
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:日志技术的问题总结和完整改进方案(单线程、多线程、子线程、定时器、队列的运用)
文章地址:http://www.cjjjs.com/article/20190401113003307
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:日志技术的问题总结和完整改进方案(单线程、多线程、子线程、定时器、队列的运用)
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. 日志技术的问题总结和完整改进方案(单线程、多线程、子线程、定时器、队列的运用) 查找全网同类文章
  2. Linux中C++程序内清除消息队列并重建消息队列 查找全网同类文章
  3. Linux使用Shell命令行查看消息队列 查找全网同类文章
  4. Linux增加消息队列的长度 查找全网同类文章
  5. mysql指定条件批量杀死线程的方法 查找全网同类文章
  6. 面试题:14 B/S端:如何设计秒杀场景? 查找全网同类文章
  7. 项目开发中使用并发模型常见问题的整理与思考 查找全网同类文章
  8. 在2.21中遇到的线程问题 查找全网同类文章
  9. 生产者与消费者中的阻塞队列实例应用 查找全网同类文章
  10. 深入理解生产者消费者中的阻塞队列 查找全网同类文章
分享到:
分享文章[日志技术的问题总结和完整改进方案(单线程、多线程、子线程、定时器、队列的运用)]到QQ空间

相关阅读

猜您感兴趣