当前位置:首页 > 奇闻趣事

日志代码 请记得输出日志,IT运维老兵看中的“日志数据”很重要

我可以是这篇文章的第一人,内容来自‘知乎’@丁伟峰

先说一个人从初级运维提升到高级运维期间实现的‘日志数据’!

现在项目里没有日志输出功能,总觉得缺少一个基本功能。特别是对于错误处理代码,没有日志输出功能,总觉得不放心。前几年主要写C/C++代码。开发过程中遇到的问题基本靠Debug。从写Ruby项目开始,我就逐渐养成了日志输出的习惯。早期的编辑器,Ruby自带的Debug功能,不是很好用。如果想发现bug,就要依靠日志输出信息来分析自己写代码的逻辑是否有问题,代码运行的定时是否有问题。最后,输出日志信息的习惯得以保留。到现在为止,不管什么项目,几乎第一个写出来的函数都是空的Log函数。

日志框架,Apache的Log4系列,很不错。在不同的语言环境下使用和配置差别不大,使用方法也很简单。这几年接触了一些PHP电商项目,还有一些其他公司做的项目,经常看到没有任何日志框架和日志输出的项目。比如,据统计,有效的代码行有几十万行,大部分来自各种插件。但是无论是核心框架部分,插件部分,甚至插件的插件代码,几乎找不到日志代码。想想就恐怖,也不知道堆了这么多代码。

一个开发IOS的朋友问我:“我想找两个PHP开发者。我应该检查他们什么?”。我想了几分钟,回答他:“检查一下对方有没有使用日志框架的习惯!”手头的这组PHP代码,在核心框架中,请有一个统一处理错误的Error函数,但是没有函数,是空函数。换句话说,项目一旦上线部署,如果出了问题,是不可能发现任何错误提示的,更别提恢复错误场景的能力了。只能说“心够大”。这样,用户和运营商将为所有系统问题买单。

日志代码贯穿整个系统,需要统一完整的设计才能发挥应有的作用。现在互联网上很多系统都是PHP做的,这些系统的主要用户都是小规模的初创企业或者传统行业对互联网的衍生品。资金不够或者不想一次性付出太多。最后因为价格问题,PHP项目成了首选。PHP项目,从CMS到电商、微信商务系统,都有一个看似强大实则非常糟糕的架构设计。那就是外挂系统。

从用户的角度来说,插件是一种增值服务。买一个有n个特效插件,一个“值”字的系统。但从技术上来说,这意味着整个系统的一部分设计是不受控制的,完全独立的。我看过很多插件,都是完全独立的小网站。所以从日志层来看,这些插件和插件的插件的日志管理也是独立的。这很尴尬。一旦出现任何运行时问题,就没有办法查错。[‘日志易’可以提供日志数据的集中收集和统一管理分析]

作为一个研发岗位,你需要有一个“我写的代码一定会出问题”的悲观想法,尽可能的留下自己代码的运行痕迹,以便出问题后迅速发现问题。一个设计良好的日志系统必须具备日志的八个关键要素,即“输出时间”、“日志类型”、“级别”、“线程ID”、“日志发生的文件名”、“行号”、“类名”、“函数名”,加上日志信息本身。可以快速定位问题。之所以建议我的朋友去调查PHP程序员日志框架的应用,是因为我看到了太多没有日志输出的PHP代码,这也是一个很好的调查点。类似于assert,可以用来判断“代码是否有接收输入前检查输入的习惯”,那么日志就是“写完代码后,你有没有想过出错了怎么办?”。换句话说。日志是编程的一种思维方式。

现在网上总有各种推广框架展示你团队的技术栈。但是很少有人讨论编程的基本功。框架再好,团队再强大。代码总是一行一行打出来的,基本功体现一种扎实的能力。代码的主要逻辑是千变万化的,但在错误处理和日志设计上有共性。不管是框架设计还是只是CRUD贴,都是一样的。写C/C++代码时,往往会有一两句函数主逻辑,但输入的判断代码和错误处理代码是主逻辑的几倍。也许是因为C/C++代码的崩溃相对于现在的Web系统来说太严重了,我们会尽量保证每一行代码的正确性。不同的语言会训练出不同的思维模式,间接反映整体设计。从我的日常来看,我个人对日志的设计已经越来越倾向于“运行时还原”。它有点类似于数据库附带的日志系统。当数据库崩溃并且无法启动时,可以通过日志文件还原数据库。这种设计的优点是,当Bug发生时,通过分析日志可以很容易地找到原因。缺点很明显,会产生大量日志,影响IO性能。有时候觉得自己太过分了,需要克制一下自己(笑)。

上周手头一个系统有异常数据,开发者也懒得来看,只是告诉我们系统日志文件的位置。找了一下,日志写的很详细,问题一下子就发现并处理掉了。一些成熟的软件和框架都有完整的日志。这些日志是开发过程中必不可少的一部分,也是发现bug的重要线索。

无论如何,关注日志,输出日志,从长远来看可以减少很多维护压力。写更多日志更容易,何乐而不为呢?

日志是企业的数据金矿。借助海量日志,通过“日志易”可以实现业务数据分析、运维故障排除、安全审计等。

1.《日志代码 请记得输出日志,IT运维老兵看中的“日志数据”很重要》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《日志代码 请记得输出日志,IT运维老兵看中的“日志数据”很重要》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/1227834.html

上一篇

7000元急招夫妻工 急招:养猪夫妻工

下一篇

最简单的电饼铛披萨 咱们用电饼铛做披萨,做法超简单,一口拉丝,我自己能吃半张

科赋 上海科赋:专注 SaaS集成系统,博得合作伙伴的信任

科赋 上海科赋:专注 SaaS集成系统,博得合作伙伴的信任

随着科学技术的发展,金融与技术的融合改变了传统银行的经营和服务模式。金融技术的快速发展加剧了银行之间的竞争压力。为了更好地适应时代的发展,满足客户不断变化和升级的需求,传统银行不断创新。由于缺乏大数据、人工智能等核心技术,传统银行在实际发展中也...

应急指挥调度系统 应急指挥调度系统解决方案

背景 如今,随着社会经济的快速发展,影响城市安全、公共安全、环境安全和社会秩序的各种不稳定因素日益增多。公共安全事件、自然灾害、事故灾难等突发事件发生频率高、危害大、影响范围广。现有的传统常规通信网络显然无法保证现场通信和及时有效的指挥救援。...

湖北高考志愿填报系统 2018湖北普通高考志愿填报指南

1.考生在线填写志愿者网站和时间 全省统一在线志愿服务网站:http://tbzy.hubzs.com.cn。 第一阶段,志愿者时间从6月25日8:00到6月28日17:00上报。 上报批次为:本科预考(含文科、美术、体育、技能高考) 本科)、...

qsv文件 win10系统如何打开qsv文件

  • qsv文件 win10系统如何打开qsv文件
  • qsv文件 win10系统如何打开qsv文件
  • qsv文件 win10系统如何打开qsv文件
温州烟草 (温州地区19个岗位)浙江省烟草专卖商业系统2019年应届大学生招聘公告

温州烟草 (温州地区19个岗位)浙江省烟草专卖商业系统2019年应届大学生招聘公告

&gt。&gt。&gt。10月22日前 &gt。&gt。&gt。10月23日前,中国农业银行浙江省分行 &gt。&gt。&gt。10月26日前,温州福利彩票发行中心和温州鹿城区房地产管理中心是同一个 浙江省烟草专卖局(公司)所属单位根据行业发展...

通信行业标准 Telcordia(电信行业网络设备构建系统标准)标准简介

  • 通信行业标准 Telcordia(电信行业网络设备构建系统标准)标准简介
  • 通信行业标准 Telcordia(电信行业网络设备构建系统标准)标准简介
  • 通信行业标准 Telcordia(电信行业网络设备构建系统标准)标准简介

sketch插件 sketch必备插件Craft功能详解(上)

  • sketch插件 sketch必备插件Craft功能详解(上)
  • sketch插件 sketch必备插件Craft功能详解(上)
  • sketch插件 sketch必备插件Craft功能详解(上)

spinal 一种面向卫星通信的无速率Spinal码通信系统设计

  • spinal 一种面向卫星通信的无速率Spinal码通信系统设计
  • spinal 一种面向卫星通信的无速率Spinal码通信系统设计
  • spinal 一种面向卫星通信的无速率Spinal码通信系统设计