Записать файл журнала GlassFish в базу данных SQL/JPA.

Мне нужна небольшая помощь, чтобы начать. У меня есть новое веб-приложение JSF-2, которое я собираюсь развернуть в GlassFish 3.1 (или выше). Обычно сервер хранит все свои файлы журналов в виде текста в одном из своих личных каталогов, который также включает журналирование, которое я делаю с помощью ether System.println( .. ) или чего-то вроде java.util. logging.Logger.getLogger( ... )

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

Можно ли это сделать и как?

Дополнительный вопрос: можно ли это сделать таким образом, чтобы его можно было перенести в Tomcat или другой контейнер?


person AlanObject    schedule 13.09.2012    source источник


Ответы (1)


Вам нужно будет написать собственный обработчик журнала. Пользовательский обработчик журнала — это класс, расширяющий java.util.logging.Handler:

package test.stackoverflow;
import java.util.logging.Handler;
..
public class AlanHandler extends Handler {
..
        @Override
        public void publish(LogRecord record) {
              //CODE THAT STORES LOG RECORD INTO THE DATABASE
        }
}

Кроме того, вам придется немного изменить logging.properties файл:

handlers=java.util.logging.ConsoleHandler, test.stackoverflow.AlanHandler

Разверните JAR AlanHandler на Glassfish (как библиотеку), перезапустите сервер, и это должно сработать.

person Miljen Mikic    schedule 16.11.2012
comment
Это выглядит очень просто. Я попробую и отчитаюсь. - person AlanObject; 16.11.2012
comment
Это просто :) В более старой версии Glassfish (2.1) у вас также было что-то, называемое «правилами управления», где вы могли настроить отлов определенных событий журнала (например, СЕРЬЕЗНЫХ). Вместе с пользовательскими MBeans это был хороший и полезный инструмент, однако, похоже, у них не было времени реализовать его более новую версию (я читал об этом какую-то ветку на официальном сайте GF). - person Miljen Mikic; 17.11.2012