2017-04-07 3 views
0

J'ai déjà effectué une recherche sur stackoverflow et Google beaucoup, mais mon problème n'est pas encore résolu.Logging RollingFileAdapter ne fonctionne pas comme prévu dans Payara Server

Problème:

Dans le code J'ai ces enregistreurs:

@Stateless 
public class NotificatrionService implements INotificationService { 
    private final static Logger logger = LoggerFactory.getLogger("DEF"); 
    private final static Logger logger_wsdlr = LoggerFactory.getLogger("wsdlr"); 
: 
: 
} 

Et dans certains cas, j'utiliser chacun

: 
logger_wsdlr.info("Some info messages"); 
: 
logger.debug("Some debug messages")); 
: 

Pour configurer logback avec Payara Server 4 (Glassfish stable 4), suivez les instructions écrites par @vzamanillo à cet article:

cannot get SLF4J working with glassfish 4

À ce guide (ou autre trouvé) les gens utilisent ch.qos.logback.core.FileAppender. Avec ce logger fonctionne assez bien, mais j'ai besoin de faire pivoter les fichiers journaux. Ensuite, je viens de configuration ch.qos.logback.core.rolling.RollingFileAppender dans mon logback.xml, comme ceci:

<configuration scan="true" debug="true"> 
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> 
     <resetJUL>true</resetJUL> 
    </contextListener> 
    <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level][%thread][%logger{36}]%msg%n"/> 
    <property name="dir" value="/tmp/log"/> 
    <appender name="DEF" class="ch.qos.logback.core.FileAppender"> 
     <file>${com.sun.aas.instanceRoot}/logs/my_def.log</file> 
     <append>true</append> 
     <encoder> 
      <Pattern>${pattern}</Pattern> 
     </encoder> 
    </appender> 
    <appender name="WSDLR" class="ch.qos.logback.core.RollingFileAppender"> 
     <file>${dir}/dt_wsdlr.log</file> 
     <append>true</append> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>${dir}/dt_wsdlr-%d{yyyy.MM.dd}.log</fileNamePattern> 
      <maxHistory>90</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap> 
     </rollingPolicy> 

     <encoder> 
      <Pattern>${pattern}</Pattern> 
     </encoder> 
    </appender> 
    <!-- appender that replace payara default server.log, defualt was redirected to ${com.sun.aas.instanceRoot}/tmp/server.log --> 
    <appender name="GF" class="ch.qos.logback.core.FileAppender"> 
     <file>${com.sun.aas.instanceRoot}/logs/server.log</file> 
     <append>true</append> 
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
      <level>INFO</level> 
     </filter> 

     <encoder> 
      <Pattern>${pattern}</Pattern> 
     </encoder> 
    </appender> 
    <root level="INFO"> 
     <appender-ref ref="GF"/> 
    </root> 

    <logger level="TRACE" name="DEF" additivity="false"> 
     <appender-ref ref="STDOUT"/> 
    </logger> 
    <logger level="DEBUG" name="wsdlr" additivity="false"> 
     <appender-ref ref="WSDLR"/> 
    </logger> 
</configuration> 

Quand je RollingFileAppender référence dans mon code, le fichier associé à l'appender n'a tout simplement pas été créé et les journaux manquant.


J'essaie d'appliquer les étapes du poste visé ci-dessus (@casten post), mais seulement une nouvelle erreur SOULEVEES

2017-04-07 10:49:25.297 [ERROR][Thread-20][j.e.system.tools.deployment.common]Exception while invoking class com.sun.enterprise.web.WebApplication start method 
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.NoClassDefFoundError: javax/servlet/ServletContainerInitializer 
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168) 
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:353) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:501) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:406) 
    at com.sun.enterprise.v3.admin.adapter.InstallerThread.load(InstallerThread.java:211) 
    at com.sun.enterprise.v3.admin.adapter.InstallerThread.run(InstallerThread.java:100) 
2017-04-07 10:49:25.297 [ERROR][Thread-20][javax.enterprise.system.core]Exception during lifecycle processing 
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.NoClassDefFoundError: javax/servlet/ServletContainerInitializer 
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168) 
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:353) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:501) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:406) 
    at com.sun.enterprise.v3.admin.adapter.InstallerThread.load(InstallerThread.java:211) 
    at com.sun.enterprise.v3.admin.adapter.InstallerThread.run(InstallerThread.java:100) 

Je Rollback juste l'emplacement des pots.

Quelqu'un peut-il m'aider à trouver la bonne façon d'utiliser RollingFileAppender?


Merci beaucoup d'avance!

Répondre

0

Honte à moi ... mon problème était une faute de frappe ....

<appender name="WSDLR" class="ch.qos.logback.core.RollingFileAppender"> 
    <file>${dir}/dt_wsdlr.log</file> 
    <append>true</append> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>${dir}/dt_wsdlr-%d{yyyy.MM.dd}.log</fileNamePattern> 
     <maxHistory>90</maxHistory> 
     <totalSizeCap>3GB</totalSizeCap> 
    </rollingPolicy> 

    <encoder> 
     <Pattern>${pattern}</Pattern> 
    </encoder> 
</appender> 

la référence de classe est correcte ch.qos.logback.core.rolling.RollingFileAppender au lieu de ch.qos.logback.core.RollingFileAppender.

+0

Veuillez marquer la bonne réponse (même si c'est la vôtre) pour indiquer que le problème a été résolu. – OndrejM

+0

désolé, j'ai été supprimé le poste, mais ... encore en vie. – Vielinko