Лучший способ взаимодействия с журналами приложений, выводимыми из log4j (в то же время обновляются приложением) - PullRequest
1 голос
/ 18 января 2012

Может быть, это проще, чем я думаю, но я запутался в следующем:

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

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

Файлы log4j могут быть множественными, т.е. обновляемый appender

Кроме того, презентация может быть в то время, когда не ведется регистрация.
Т.е. просмотр журналов до даты

ОБНОВЛЕНИЕ:
Я ограничен Java 6

Ответы [ 7 ]

1 голос
/ 18 января 2012

Вы можете использовать библиотеки Java 7 NIO2, чтобы получать уведомления об изменении одного из нескольких файлов в каталоге и перечитывать и отображать его:

http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes

0 голосов
/ 17 января 2019

Попробуйте XpoLog log4j / log4net разъем. Он анализирует данные автоматически и имеет предопределенный набор информационных панелей для него:

Выполните следующие шаги

  1. Загрузите и установите XpoLog из здесь

  2. Добавьте данные log4j с помощью соединителя данных log4j из здесь и

  3. развернуть приложение log4j здесь

0 голосов
/ 25 января 2012

Если вы пишете свой собственный простой appender, и ваше приложение включает его в вашу конфигурацию log4j, ваш appender будет вызываться всякий раз, когда события записываются в другие appdenders, и вы можете выбрать отображение сообщений о событиях, временных отметок и т. Д. В пользовательский интерфейс.

0 голосов
/ 18 января 2012

Может быть, вы могли бы подумать о более "OS-уровне" решение. Я не знаю, используете ли вы win или linux, но в linux есть очень хорошая команда tail. Таким образом, вы можете использовать ProcessBuilder для создания процесса ОС, который выглядит примерно так: "tail -f yourLogFile.txt". А затем прочитайте OutputStream возвращенного процесса . Чтение потока заблокирует ожидание появления новых выходных данных процесса и сразу же разблокирует их, когда они станут доступны, что даст вам немедленную обратную связь и возможность прочитать последние изменения файла журнала.

Однако у вас могут возникнуть проблемы с отключением этого процесса от Java. Вы должны быть в состоянии послать сигнал SIGTERM на него, если вы знаете идентификатор процесса. Или вы можете запустить другой процесс, который может найти идентификатор процесса «tail» и уничтожить его с помощью команды «kill» или что-то подобное.

Также я не уверен, есть ли аналогичный инструмент в Windows, если это ваша платформа.

0 голосов
/ 18 января 2012

Для официальной документации из log4j:

Есть ли способ получить log4j для автоматической перезагрузки файла конфигурации, если он изменяется?

Yes. Both the DOMConfigurator and the PropertyConfigurator support automatic reloading
through the configureAndWatch method. See the API documentation for more details.

Для перезагрузки конфигурации log4j по требованию с использованиемГрафический интерфейс Я бы предложил выставить его через сервлет в вашем приложении J2EE, чтобы можно было отредактировать весь файл на веб-странице (может быть текстовая область), и после сохранения вы можете перезаписать существующий файл log4j и перезагрузить конфигурацию log4j.

0 голосов
/ 18 января 2012

Может быть, добавить приложение базы данных (JDBCAppender) и представить записи журнала из этого?

0 голосов
/ 18 января 2012

Пробовали ли вы следующие инструменты:

бензопила

Xpolog

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