Как извлечь только журналы ошибок из файла журнала Java? - PullRequest
0 голосов
/ 01 марта 2019

Я работаю над приложением для мониторинга журналов. Мне нужно получить только журналы уровня ОШИБКИ из файла с именем CATALINA.OUT.В нем так много журналов, только мне нужно получить из этого уровень журнала ОШИБКА [исключение целиком].Пожалуйста, помогите мне в этом.

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

Смотреть во время выполнения:

$ tail -f /var/log/tomcat8/catalina.out | grep 'ERROR'
0 голосов
/ 01 марта 2019

Я предлагаю подход высокого уровня, чтобы справиться с этим (предположим, что у вас нет доступа к конфигурации регистратора)

  1. Наблюдайте шаблон записи журнала (часто тот же самый, поэтому я взял jbosslog):

09: 42: 55,142 DEBUG [org.jboss.as.config] (поток службы MSC 1-6) Настроенные системные свойства ...

Итак, шаблон для различения, когда начинаются новые записи журнала:

ВРЕМЯ] [пробел] [LOG_LEVEL] [пробел] [classeName] [пробел] [нить] [сообщение

Реализация считывателя

Для простоты я предлагаю вам сохранить записи журнала в виде списка.

Ниже приведен простой алгоритм для вашего считывателя:

open stream While end of log file is not reach reading if the line starts with the pattern “TIME][space][LOG_LEVEL…” then extract the log level of what you read until now if logLevel equals error then persist what I read until now excluding the current line create a new log record object else clear your log record object endif endif Store the current line into your log record object End of while close stream

В вашем приложении попросите пользователя загрузить файл журнала, и вы сможете просто запустить свое устройство чтения и отобразить результат.

Существует много способов реализовать устройство чтения, поэтомуесли вы реализуете проверку концепции, просто создайте в java программу чтения, которая будет читать строку за строкой, например: java 8 stream читает файл строка за строкой

Когда это работает, вы можетесоблюдайте конкретно запись журнала выписки именно то что вам нужно ...

0 голосов
/ 01 марта 2019

Предполагая, что вы используете Linux, вы можете использовать grep со своего терминала следующим образом:

$ grep 'ERROR' CATALINA.OUT

С $ man grep:

grep ищет PATTERN вкаждый файл.ФАЙЛ «-» обозначает стандартный ввод.Если FILE не задан, рекурсивные поиски проверяют рабочий каталог, а нерекурсивные поиски читают стандартный ввод.По умолчанию grep печатает совпадающие строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...