2014-12-16 18 views
5

Ho un'applicazione Java EE in esecuzione su Wildfly 8 in cui desidero abilitare la registrazione di controllo. Utilizzo di InterceptorBinding e Interceptor Sono in grado di catturare tutte le chiamate API pertinenti.Come registrare il controllo dell'applicazione per separare il file su Wildfly 8

Quello che voglio fare è scrivere queste chiamate di controllo in un file di registro di controllo separato. Ho provato a implementarlo utilizzando il logback e con l'aiuto della seconda risposta in this stackoverflow question sono finalmente riuscito a farlo. La prima risposta, vale a dire la disabilitazione della registrazione del sistema, non ha funzionato. Tuttavia, mentre questa soluzione scrive correttamente la traccia di controllo su un file separato, tutte le altre registrazioni hanno smesso di essere scritte nei loro file predefiniti e sono state inviate alla console.

Ciò che voglio ottenere è che tutto il normale log sia scritto sul file regolare (es. Server.log) com'è di default, ma per avere i miei messaggi di log di controllo personalizzati in un file separato (che rotola anche su un ogni giorno, rinominando il vecchio file alla data in cui è stato scritto).

Se ciò viene eseguito con Logback, log4j, il proprio sistema di registrazione di Wildfly o anche il log di controllo Wildfly CLI, è irrilevante fintanto che raggiunge lo scopo, con un sovraccarico minimo. In questa fase, sto pensando di scriverlo nel mio file con un outputstream semplice, ma mi sembra piuttosto superfluo quando ci sono soluzioni che dovrebbero farlo in modo molto più efficiente.

Questo è ciò che il mio file logback assomiglia:

<?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> 

risposta

10

sono finalmente riuscito a ottenere quello che volevo modificando il file standalone.xml in wildfly. Ho aggiunto un gestore di file e un logger personalizzati che utilizzano questo gestore di file. Non c'è bisogno di un'implementazione di logback personalizzata o qualcosa del genere.

<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>