查看原文
其他

实习生凭借自己写的脚本年终奖多了好几千

晨星 脚本之家 2023-03-01
 关注“脚本之家”,与百万开发者在一起
作者 | 晨星 
出品 | 脚本之家(ID:jb51net)
积极的人总是在困境中不断寻求解决方案,而消极的人却总是在抱怨中不停的发牢骚。而你属于哪一类人呢?
初到一家公司,上级就给你分配了一项根据本地日志输出文件来定位老系统sql等代码是否有报错的任务,如果日志里有显示错误,那就返过来定位到代码中进行相应的修改,对于刚进入该公司的一名实习生你会如何做?
是选择跟其他众多实习生一样心里不停的发牢骚说:“垃圾东西,这么旧的项目有谁还做啊……”;还是选择今早入职下午就炒老板;亦或者选择跟上级硬杠拒绝他分配的这个任务……
而我选择了另一条路,一条不一样的路。


01先冷静分析问题关键
上级的任务很明确,就是根据看系统日志输出文件里有没有报错信息,如果有的话就返回代码中修改,修改完继续跟踪日志,重复上面的操作。但这里面有隐藏的一些细节没有说:
  1. 系统在调试阶段是部署在本地windows系统上的
  2. 日志输出很快,在记事本里看日志记录不停的跳动
  3. 日志输出文件有点大,一般的记事本软件打开一会就会卡顿
  4. 日志里有很多其它不必要关注的日志信息
经过上面冷静一分析其实问题点关键就在于它是部署在windows系统本地上,如果是在Linux系统上,用tail -f命令再组合加上一些过滤条件命令便可实时定位跟踪日志文件,输出自己想要看到的内容了。
可它是windows系统,它又没有该命令,记事本全局搜索着看记录跳动的又太快,时常还经常卡顿,这就是该问题的核心难点问题,也是其他实习“骂扑街的”的地方。
但问题已经分析出来了,总要解决,因为发牢骚一时爽,天天发天天爽,可问题依然是没有解决啊,所以还是要思考如何去解决问题,这才是最重要的


02思考解决方案
经过上面的一波分析,我们知道如果windows上要是也有像Linux上那样的实时追踪命令,那不是解决了问题的关键吗。那既然没有可不可以自己尝试写一个脚本出来用于实时跟踪日志文件呢?
不多瞎逼逼,马上分析搞起来。实在不行最多就老老实实看着记事本全局搜索跳着来将就改呗。
分析写这个脚本需要哪些知识点:
  1. 打开、关闭日志文件
  2. 如何实时定位到文件末尾
  3. 输出日志记录
  4. 循环2. 3步骤
如果自己上面分析的知识点自己都会,那直接就很快手撸一个脚本出来了,如果不会那也没有关系,对应哪些知识点不会直接去找度娘恶补就行了,毕竟不是每个人都是百科全书,啥都记得住的。
动不动就说自己不会的人,其实他并不是不会,他只是懒,不想努力罢了。


03行动,解决问题

一、Linux解决方案

为了让萌星们知道Linux系统上是如何用tail -f日志实时追踪命令的,这里就再简单的演示一遍,毕竟光说不练假把式,会的大佬们就当是看小学生作文吧。
常用命令:
# 实时跟踪a日志文件(默认后面10条)
tail -f a.log

#
实时跟踪a日志文件指定记录条数(带上参数-n,后面加你所需要指定的条数)
tail -f -n 15 a.log

#
实时跟踪a日志文件并过滤指定条件的记录(很实用哟)
tail -f a.log | grep 'DEBUG' -c 5 // 意思是:监控a日志文件,并查看含有DEBUG关键字的前后5行
这里演示最后一条命令,也是解决上面问题的核心关键,其它命令自己动手试一下啦:
二、windows解决方案
根据第二阶段分析的知识点步骤,因为自己懂点python,所以脚本就用它来写了,核心代码如下
def tail(filePath):
with open(filePath, 'r') as f:
f.seek(0, 2)
while True:
line = f.readline()
if not line:
time.sleep(0.3)
continue
yield line

if __name__ == '__main__':
for line in tail(filePath):
print(line)

将系统日志文件的绝对路径传入函数内,然后执行就可以跟Linux系统上的tail -f命令一样实时跟踪日志输出了,再也不用担心记事本文件打不开卡顿以及记录跳转的很快的问题了。

这个只是简易版的实时跟踪日志文件输出,并没有像Linux系统命令那么强大,但是代码已经给你了,下面你需要什么功能就自己去扩展了呗。

04惊喜总是在你最积极乐观的时候出现
因为想着自己以后也许还会经常用到这个脚本,索性就优化了一下,让它能够支持过滤条件并打包成一个.exe可执行文件,这样以后自己要用的时候就只需要输入日志文件路径,文件编码、过滤掉哪些不需要的日志记录,一键点开始就可以了。
在自己闲暇之余,鼓捣了一下,没想到还真的搞出来一个东西,你看长这个样子
就这样用上自己写的脚本后,我顺利的完成了上级分配的任务,有一次上司走过来意外的发现说:你这个windows日志追踪是啥软件来的,我小声的说这是我自己写的,上司大吃一惊说:可以可以,我帮你你申请一下公司奖金。
就这样到了年终的时候,奖金多了好几千,哈哈哈哈,惊喜总是在你最积极乐观的时候出现,如果当初我也选择前面三条路中的一条来走,那这惊喜来了也接不住啊。
最后:这里其实最想分享的还是遇事冷静思考的一种思维方式,希望以后少走弯路,遇坑填坑,遇水架桥,如果你觉的这篇文章还可以那就点个赞或赞赏一下吧,因为你的鼓励是我源源不断分享的动力。
作者介绍:出入职场的程序员小白,喜欢分享,喜欢写文章,更喜欢跑步,一起学习,一起进步。
声明:
本文为 脚本之家专栏作者 投稿,未经允许请勿转载。
  推荐阅读:炸了!实习生把代码仓库搞得一团糟…
一个悄然成为世界最流行的操作系统
如何用低代码“搞垮”一家公司?
大厂员工带宠物上班之后

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存