Я пытаюсь получить исключения из журналов вместе с StackTrace. Журналы находятся в формате, указанном ниже.Извлечение исключений из журналов вместе с stacktrace
[2015-01-07 18:39:18,212] host123 WARN com.host123 .elf.UserQuest - Quest/option {o.q.more.paper.osc#0} references unknown dependent {t.what.form.file.more.action} in application {src-code}. Please revise.
[2015-01-07 18:39:18,212] host123 WARN com.host123 .elf.UserQuest - Quest/option {o.q.more.paper.osc#1} references unknown dependent {t.what.form.file.more.action} in application {src-code}. Please revise.
[2015-01-07 18:40:34,281] cessor32 ERROR com.host123 .email.DirectMailer - Unable to connect to server {1.1.1.1}:
javax.mail.MessagingException: Could not connect to SMTP host: 1.1.1.1, port: 25, response: 451
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:996)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:197)
at javax.mail.Service.connect(Service.java:233)
at javax.mail.Service.connect(Service.java:134)
at com.host123.email.DirectMailer.deliverMessage(DirectMailer.java:191)
at com.host123.email.DirectMailer.send(DirectMailer.java:153)
at com.host123.webface.util.Notifications.sendEmailX(Notifications.java:126)
at com.host123.webface.util.Notifications.sendEmail(Notifications.java:91)
at com.host123.webface.util.Notifications.sendEmail(Notifications.java:145)
at com.host123.edp.webface.action.DocRecoveryActionProcessor.perform(DocRecoveryActionProcessor.java:81)
Я использую этот код для извлечения записей
sed -n '/${bb}/,/${aa}/p' ${k}|egrep "ERROR|ORA|Exception|at.*\.java\:.*"
где бб является предыдущей датой и аа является текущей датой. Если я использую только команду sed, то я могу получить данные на основе условия даты, но использование egrep вместе с sed не дает результата.
Я также попытался использовать команду awk.
awk -v "sd=$aa" -v "ed=$bb" -F "," '$1 >= sd && $1 <= ed' $k
То, что я думаю, что проблема может быть в том, что команда AWK извлекает строки, которые имеют дату в нем и StackTrace строка не имеет какой-либо строки. Это может быть или не быть правильным.
Также я извлекаю это из тысяч файлов журнала. Если есть какой-либо способ уменьшить объем памяти, используемой для извлеченных данных, это будет очень полезно.
Любая помощь будет принята с благодарностью.
$ 1 is '[2015-01-07 18: 39: 18' с' ['. –
Укажите примерные значения '$ bb' и' $ aa' с ожидаемым результатом. – anubhava
, если вы знаете длину стека стека по умолчанию, вы, вероятно, могли бы использовать что-то вроде 'grep Exception -B 1 -A TraceLength-1' –