2014-12-16 13 views
5

Mam aplikację Java EE działającą na Wildfly 8, w której chcę włączyć rejestrowanie audytu. Używając InterceptorBinding i Interceptor, jestem w stanie wychwycić wszystkie odpowiednie wywołania API.Jak rejestrować inspekcję aplikacji w oddzielnym pliku na Wildfly 8

Co chcę zrobić, to zapisać te wywołania inspekcji w oddzielnym pliku dziennika inspekcji. Próbowałem zaimplementować to za pomocą funkcji logback, a przy pomocy drugiej odpowiedzi w this stackoverflow question udało mi się wreszcie to zrobić. Pierwsza odpowiedź, tj. Wyłączenie rejestrowania systemu, nie działała. Jednak podczas gdy to rozwiązanie pomyślnie zapisuje moje śledzenie audytu w oddzielnym pliku, wszystkie inne rejestrowanie przestało być zapisywane w ich domyślnych plikach i było tylko wyprowadzane do konsoli.

Chcę, aby wszystkie zwykłe dzienniki były zapisywane w zwykłym pliku (np. Server.log), jak to jest domyślnie, ale aby mieć własne niestandardowe komunikaty dziennika kontroli w osobnym pliku (również codziennie, zmieniając nazwę starego pliku na datę, w której został napisany).

Niezależnie od tego, czy odbywa się to za pomocą Logback, log4j, własnego systemu logowania Wildfly, czy nawet dziennika inspekcji Wildfly CLI, nie ma znaczenia, o ile osiągnie cel przy minimalnym obciążeniu. Jestem na tym etapie, rozważając zapisanie go we własnym pliku za pomocą prostego strumienia wyjściowego, ale to wydaje się raczej zbyteczne, gdy istnieją rozwiązania, które powinny robić to znacznie bardziej efektywnie.

To właśnie mój plik logback wygląda następująco:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appender name="AUDIT-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>/Applications/wildfly/standalone/log/logback/audit/audit.log</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern> 
     </rollingPolicy> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS}: - %msg%n</pattern> 
     </encoder> 
    </appender> 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <File>/Applications/wildfly/standalone/log/logback/server.log</File> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern> 
     </rollingPolicy> 
     <encoder> 
      <Pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern> 
     </encoder> 
    </appender> 
    <logger name="audit" level="INFO" additivity="false"> 
     <appender-ref ref="AUDIT-FILE"/> 
    </logger> 
    <logger name="org.jboss.resteasy.core.ExceptionHandler" level="ALL"> 
     <appender-ref ref="FILE" /> 
    </logger> 
    <root level="ALL"> 
     <appender-ref ref="FILE"/> 
    </root> 
</configuration> 

Odpowiedz

10

końcu udało mi się osiągnąć to, co chciałem, modyfikując plik standalone.xml w JBoss Application Server. Dodałem niestandardową procedurę obsługi plików i program rejestrujący, który używa tej procedury obsługi plików. Nie ma potrzeby niestandardowej implementacji logback ani niczego podobnego.

<subsystem xmlns="urn:jboss:domain:logging:2.0"> 
     <console-handler name="CONSOLE"> 
      <level name="INFO"/> 
      <formatter> 
       <named-formatter name="COLOR-PATTERN"/> 
      </formatter> 
     </console-handler> 
     <periodic-rotating-file-handler name="FILE" autoflush="true"> 
      <formatter> 
       <named-formatter name="PATTERN"/> 
      </formatter> 
      <file relative-to="jboss.server.log.dir" path="server.log"/> 
      <suffix value=".yyyy-MM-dd"/> 
      <append value="true"/> 
     </periodic-rotating-file-handler> 
     <periodic-rotating-file-handler name="MYHANDLER" autoflush="true"> 
      <formatter> 
       <named-formatter name="PATTERN"/> 
      </formatter> 
      <file relative-to="jboss.server.log.dir" path="application-audit.log"/> 
      <suffix value=".yyyy-MM-dd"/> 
      <append value="true"/> 
     </periodic-rotating-file-handler> 
     <logger category="com.mycompany.myapplication"> 
      <level name="INFO"/> 
      <handlers> 
       <handler name="MYHANDLER"/> 
      </handlers> 
     </logger> 
     <logger category="com.arjuna"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="org.apache.tomcat.util.modeler"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="org.jboss.as.config"> 
      <level name="DEBUG"/> 
     </logger> 
     <logger category="sun.rmi"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="jacorb"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="jacorb.config"> 
      <level name="ERROR"/> 
     </logger> 
     <logger category="org.jboss.security"> 
      <level name="TRACE"/> 
     </logger> 
     <root-logger> 
      <level name="INFO"/> 
      <handlers> 
       <handler name="CONSOLE"/> 
       <handler name="FILE"/> 
      </handlers> 
     </root-logger> 
     <formatter name="PATTERN"> 
      <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
     </formatter> 
     <formatter name="COLOR-PATTERN"> 
      <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
     </formatter> 
    </subsystem> 
Powiązane problemy