首页
学习
活动
专区
工具
TVP
发布

关于日志的那些事儿

日志的作用

1.审计

商业分析:比如从日志中提取用户行为(比如,一个点击事件流)并结合用户的其他详情(比如,最终购买行为)来生成报告或者推荐相关产品。

接口调用情况统计:调用量、调用成功率、平均响应时间

软件使用情况统计

...

2.诊断

根据日志的错误信息的上下文定位和追踪问题

根据相关日志信息了解软件的运行状态

...

3.监控告警

在运维中,经常需要实时监控日志内容,根据某种策略来判断是否发出邮件告警,通知相关人员及时处理。读取日志的时间间隔可以根据实际情况来设定,可以1分钟、或者5分钟。

告警策略:

基于关键字告警: 出现某些关键字,如SQLException,则发出邮件告警。

基于统计告警:比如统计接口的成功率,低于某个值则告警;复杂一点的比如某个接口出现次数大于多少,成功率低于多少则告警;又如接口平均响应时间大于多少则告警。

实时读取日志的三种方法:

增量读取:每次读取日志把文件的大小保存下来,下一次从一次的记录的位置开始读取。

根据日志的时间读取,比如只读取最近两分钟的内容。这用方法不用记录读取的位置,日志文件不大时候,可采用这种方法,如果日志文件很大则此方法不适合。

使用类似watchdog的库实时监控日志的变化,日志一用增加则读取增加部分,这种方法实时性较高。

碎碎念

程序未动,log先行: 编程一开始就把日志打印纳入开发计划,打印日志是软件开发不可或缺的一部分,一开始就要规划好。

克制,勿让无用信息干扰有用信息:比如在一个会循环很多次的for循环里面,我们需要打印日志但又不想每次都打印,可以每100次打印一次,每1000次打印一次,打印频率具体情况具体分析。

另一种打印日志的方式:使用nohup启动程序,比如使用nohup启动Python脚本,代码中使用print打印的内容会被重定向到nohup.out文件中,省去了配置logging参数的麻烦。简单的脚本中可采用这种方法。

在Python中使用logging.error(e, exc_info=True)打印异常信息, 而不是logging.error(e), logging.error(e)不会打印异常上下文;还可以使用logging.exception(e), 这种方法也会打印上下文。

...

使用Python统计大日志的技巧

Python和shell命令结合 Python语言简单,功能强大,适合数据统计。有些shell命令过滤文本的效率很高,使用也很简单,比如grep。可以把Python的统计能力和shell命令高效过滤结合在一下提高统计大日志的效率

采用多进程 如果有很多日志文件要统计,可以采用多进程和shell结合,每个进程统计一个日志,最后再把各进程统计出来的结果汇总起来。这里是不是有一点MapReduce的味道。

下面给出一个Demo的代码框架:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181114G211FS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券