Python-过滤错误log并导出

前言:

测试过程中获取App相关log后,如何快速找出crash的部分,并导出到新的文件呢?
感兴趣的话,继续往下看吧~


思路:遍历多个日志文件,找出含有ErrorCrash的日志,并把该行日志输出到另一个文件result.txt中。

def find_log(path):
    file_list = os.listdir(path)
    for file in file_list:
        file_name = file
        log_path = os.path.join(path, file)
        with open(log_path, 'rb') as f:
            lines = f.readlines()
            index = 0
            for line in lines:
                index += 1
                if 'Crash' in line.decode("utf8", "ignore") or 'Error' in line.decode("utf8", "ignore"):
                    ss = re.findall(r'(.*Crash.*)', line.decode("utf8", "ignore"))
                    zz = re.findall(r'(.*Error.*)', line.decode("utf8", "ignore"))
                    if len(zz) > 0:
                        with open('result.txt', 'a') as ff:
                            ff.write('文件名:'+file_name + ' 第' + str(index) + '行: ' + zz[0] + '\n')
                    elif len(ss) > 0:
                        with open('result.txt', 'a') as ff:
                            ff.write('文件名:'+file_name + ' 第' + str(index) + '行: ' + ss[0] + '\n')
                    else:
                        break

result.txt文件展示如下:

文件名:amstart.log 第611行: 01-12 11:10:33.534 E/FirebaseCrash(14844): Failed waiting for crash api to load.
文件名:amstart.log 第612行: 01-12 11:10:33.534 E/FirebaseCrash(14844): java.lang.InterruptedException
文件名:amstart.log 第613行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1013)
文件名:amstart.log 第614行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1302)
文件名:amstart.log 第615行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:249)
文件名:amstart.log 第616行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at com.google.firebase.crash.FirebaseCrash.zzbsk(Unknown Source)
文件名:amstart.log 第617行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at com.google.firebase.crash.FirebaseCrash.zza(Unknown Source)
文件名:amstart.log 第618行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at com.google.firebase.crash.zza.run(Unknown Source)
文件名:amstart.log 第619行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
文件名:amstart.log 第620行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
文件名:amstart.log 第621行: 01-12 11:10:33.534 E/FirebaseCrash(14844):   at java.lang.Thread.run(Thread.java:818)
文件名:uninstall.log 第213行: 01-12 11:16:33.382 W/ActivityManager( 1068): Error in app com.baidu.mtc.new_monkey running instrumentation ComponentInfo{com.baidu.mtc.new_monkey.test/android.support.test.runner.AndroidJUnitRunner}:
文件名:uninstall.log 第219行: 01-12 11:16:33.383 W/ActivityManager( 1068): Error shutting down UiAutomationConnection
文件名:logcat.log 第31653行: 01-12 11:13:48.556 E/Gn_Assist(17385): GnVoiceService dispatchRecoError className is empty
文件名:logcat.log 第31654行: 01-12 11:13:48.556 E/Gn_Assist(17385): FocusException getErrorMsg ERROR_NO_MATCH
文件名:install.log 第26514行: 01-12 11:09:40.641 W/System.err(14314):    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

以上,对你有帮助的话,点赞❤️吧~~
欢迎关注我的简书,博客,TesterHome,Github~~~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,124评论 0 7
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,407评论 0 9
  • 代码规范 1. h文件代码 类功能说明注释。属性说明注释。方法说明注释。类名加前缀,避免命名空间冲突. 2. m文...
    ValienZh阅读 1,411评论 0 2
  • 忽然脑海中浮现出这句歌词,是我此时最好的写照吧。 如果没有相遇,也许没有这般美好与黑暗。 自己是一个“大度”的人,...
    青青李子pgy阅读 574评论 0 0
  • 第三天 集中注意力 集中注意力是一种专注的技能,专心的能力。 注意力可以帮助 1. 在快节奏的世界里更有效率 2....
    alian__fighting阅读 209评论 0 0