I am trying to fetch logs from a log file using the grep command. However, I can match time stamps, but am not getting the full stack trace I need.
(From my answer here: https://stackoverflow.com/a/16064081/430128)
Here is a quick-and-dirty grep expression... if you are using a logger such as log4j than the first line of the exception will generally contain WARN
or ERROR
, the next line will contain the Exception name, and optionally a message, and then the subsequent stack trace will begin with one of the following:
"\tat"
(tab + at)"Caused by: "
"\t... more"
(these are the lines that indicate the number of frames in the stack not shown in a "Caused by" exception)We want to get all of the above lines, so the grep expression is:
grep -P "(WARN|ERROR|^\tat |Exception|^Caused by: |\t... \d+ more)"
It assumes an Exception class always contains the word Exception
which may or may not be true, but this is quick-and-dirty after all.
Adjust as necessary for your specific case.