Расширение регистрации JBoss AS 7 в базе данных - PullRequest
7 голосов
/ 28 октября 2011

В нашем приложении включена регистрация jboss. В настоящее время мы используем 'Rotating-file-handler' для записи всего в файлы. Это определено в файле jboss 'standalone.xml'. Мы также собираемся внести некоторую информацию в базу данных журналов; ради строительных показателей и т. д.

Может кто-нибудь предложить некоторые варианты, которые мы можем использовать здесь. Наша конечная цель заключается в том, чтобы, когда что-то записывалось в файл; мы бы перехватили и записали это в БД. Мы не хотим делать это в строке, так как это будет блокирующий вызов.

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Эта ссылка показывает ТОЧНО, как настроить то, что я хотел. JBoss AS 7.0.1 имеет функцию поддержки пользовательских обработчиков журналов.

http://community.jboss.org/wiki/CustomLogHandlersOn701

0 голосов
/ 06 ноября 2011

Используйте AsyncAppender и присоедините к нему DBAppender.

Что-то вроде этого для асинхронной части:

<async-handler name="ASYNC">
    <level name="DEBUG"/>
    <queue-length value="1024"/>
    <overflow-action value="BLOCK"/>
    <subhandlers>
    <handler name="CONSOLE"/> <!-- if you have these defined -->
    <handler name="FILE"/>    <!-- if you have these defined -->
    <handler name="DB"/>
    </subhandlers>
</async-handler>

А затем определите DB как DBAppender (или JDBCAppender в зависимости от того, что выустановили).

<log4j-appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
      <error-manager>
         <only-once/>
      </error-manager>

   <level name="INFO"/>   
   <properties>
      <property name="URL">jdbc:postgresql://localhost:5432/data</property>
   <property name="driver">org.postgresql.Driver</property>
   <property name="user">admin</property>
   <property name="password">admin</property>
   </properties>

   <formatter>
         <pattern-formatter pattern="insert into Log values (current_timestamp,'%c', '%t','%p','%m')" />
      </formatter>   
   </log4j-appender>
...