2017-08-25 36 views
0

我想提取追蹤錯誤的細節,那些回溯從日誌文件中提取使用this method,並有許多不同種類的回溯中,象下面這樣:如何使用python正則表達式從traceback中提取錯誤細節?

Traceback (most recent call last): 
    File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/usr/lib/python2.7/runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "/root/env/common/test/test/__main__.py", line 5, in <module> 
    main() 
    File "/root/env/common/test/test/cli/parser.py", line 55, in main 
    run_script(args) 
    File "/root/env/common/test/test/cli/runner.py", line 124, in run_script 
    exec_script(args.script, scope=globals(), root=True) 
    File "/root/workspace/group/test_regression_utils.py", line 123, in exec_script 
    cli_exec_script(*args,**kwargs) 
    File "/root/env/common/test/test/cli/runner.py", line 186, in exec_script 
    exec(compile(code, scriptpath, 'exec')) in scope 
    File "shiju_12.py", line 30, in <module> 

    File "/root/moaworkspace/group/testscript/utils/shiju_public.py", line 37, in shiju_move 

Exception: close failed! 
EndOfStream 
EndOfStream 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/usr/lib/python2.7/runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "/root/env/common/test/test/__main__.py", line 5, in <module> 
    main() 
    File "/root/env/common/test/test/cli/parser.py", line 55, in main 
    run_script(args) 
    File "/root/env/common/test/test/cli/runner.py", line 124, in run_script 
    exec_script(args.script, scope=globals(), root=True) 
    File "/root/env/common/test/test/cli/runner.py", line 186, in exec_script 
    exec(compile(code, scriptpath, 'exec')) in scope 
    File "/root/env/common/mator/mator/mator.py", line 520, in start 
    raise IOError("RPC server not started!") 
IOError: RPC server not started 

的預期結果是:

("XXXX", "Exception: close failed!") 
("XXXX","IOError: RPC server not started") 

我試圖detail_regex = r'Traceback.*\n(\s+.*\n)*(.*)\n*' 第二回溯是正確的,但第一個回溯的結果是("Exception: close failed!", "EndOfStream")

任何IDE如?

+0

這可能是一個更好的主意,檢查追溯對象(不記得確切地說,他們被稱爲雖然)。 – SwiftsNamesake

+0

哦,回溯是從日誌文件中獲得的。 – nanci

+0

該鏈接指向回答這個問題 – SwiftsNamesake

回答

0

如果我改變你的模式爲Traceback.*\n(\s+.*\n)*(.*?)\n*它適用於給定的例子。我不確定,但它完全解決了你的問題。