积极的人总是在困境中不断寻求解决方案,而消极的人却总是在抱怨中不停的发牢骚。而你属于哪一类人呢? 初到一家公司,上级就给你分配了一项根据本地日志输出文件来定位老系统sql 等代码是否有报错的任务,如果日志里有显示错误,那就返过来定位到代码中进行相应的修改,对于刚进入该公司的一名实习生你会如何做?是选择跟其他众多实习生一样心里不停的发牢骚说:“垃圾东西,这么旧的项目有谁还做啊……”;还是选择今早入职下午就炒老板;亦或者选择跟上级硬杠拒绝他分配的这个任务…… 上级的任务很明确,就是根据看系统日志输出文件里有没有报错信息,如果有的话就返回代码中修改,修改完继续跟踪日志,重复上面的操作。但这里面有隐藏的一些细节没有说:- 日志输出文件有点大,一般的记事本软件打开一会就会卡顿
经过上面冷静一分析其实问题点关键就在于它是部署在windows 系统本地上,如果是在Linux 系统上,用tail -f 命令再组合加上一些过滤条件命令便可实时定位跟踪日志文件,输出自己想要看到的内容了。可它是windows 系统,它又没有该命令,记事本全局搜索着看记录跳动的又太快,时常还经常卡顿,这就是该问题的核心难点问题,也是其他实习“骂扑街的”的地方。 但问题已经分析出来了,总要解决,因为发牢骚一时爽,天天发天天爽,可问题依然是没有解决啊,所以还是要思考如何去解决问题,这才是最重要的。 经过上面的一波分析,我们知道如果windows 上要是也有像Linux 上那样的实时追踪命令,那不是解决了问题的关键吗。那既然没有可不可以自己尝试写一个脚本出来用于实时跟踪日志文件呢?不多瞎逼逼,马上分析搞起来。实在不行最多就老老实实看着记事本全局搜索跳着来将就改呗。 如果自己上面分析的知识点自己都会,那直接就很快手撸一个脚本出来了,如果不会那也没有关系,对应哪些知识点不会直接去找度娘恶补就行了,毕竟不是每个人都是百科全书,啥都记得住的。动不动就说自己不会的人,其实他并不是不会,他只是懒,不想努力罢了。一、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行
这里演示最后一条命令,也是解决上面问题的核心关键,其它命令自己动手试一下啦: 根据第二阶段分析的知识点步骤,因为自己懂点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 系统命令那么强大,但是代码已经给你了,下面你需要什么功能就自己去扩展了呗。 因为想着自己以后也许还会经常用到这个脚本,索性就优化了一下,让它能够支持过滤条件并打包成一个.exe 可执行文件,这样以后自己要用的时候就只需要输入日志文件路径,文件编码、过滤掉哪些不需要的日志记录,一键点开始就可以了。在自己闲暇之余,鼓捣了一下,没想到还真的搞出来一个东西,你看长这个样子 就这样用上自己写的脚本后,我顺利的完成了上级分配的任务,有一次上司走过来意外的发现说:你这个windows 日志追踪是啥软件来的,我小声的说这是我自己写的,上司大吃一惊说:可以可以,我帮你你申请一下公司奖金。就这样到了年终的时候,奖金多了好几千,哈哈哈哈,惊喜总是在你最积极乐观的时候出现,如果当初我也选择前面三条路中的一条来走,那这惊喜来了也接不住啊。 最后:这里其实最想分享的还是遇事冷静思考的一种思维方式,希望以后少走弯路,遇坑填坑,遇水架桥,如果你觉的这篇文章还可以那就点个赞或赞赏一下吧,因为你的鼓励是我源源不断分享的动力。作者介绍:出入职场的程序员小白,喜欢分享,喜欢写文章,更喜欢跑步,一起学习,一起进步。 声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。
上一篇:通俗易懂的ArcGis开发快速入门 下一篇:一道关于Log4j2的CTF题目 |