2017-10-19 12 views
0

Idéalement, je voudrais tout enregistrer au cours du développement sur un localhost et de ne consigner que les erreurs sur le serveur en direct. J'ai des problèmes pour me connecter aux fichiers sur ma plate-forme de développement (Windows 10, Java avec Wicket).log4j2 ne parvient pas à écrire dans le fichier

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- https://logging.apache.org/log4j/2.x/articles.html 
http://mycuteblog.com/log4j2-xml-configuration-example/ --> 
<Configuration status="DEBUG"> 
    <Properties> 
     <Property name="log-path">${sys:catalina.home}/logs</Property> 
    </Properties> 
    <Appenders> 
     <Console name="console-log" target="SYSTEM_OUT"> 
      <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
     </Console> 
     <RollingFile name="trace-log" fileName="${log-path}/luminous-trace.log" 
      filePattern="${log-path}/luminous-trace-%d{yyyy-MM-dd}.log"> 
      <PatternLayout> 
       <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      </Policies> 
     </RollingFile> 
     <RollingFile name="error-log" fileName="${log-path}/luminous-error.log" 
      filePattern="${log-path}/luminous-error-%d{yyyy-MM-dd}.log"> 
      <PatternLayout> 
       <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      </Policies> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <Logger name="com.linguaclassica" level="debug" additivity="false"> 
      <appender-ref ref="trace-log" level="debug"/> 
      <appender-ref ref="error-log" level="error"/> 
      <appender-ref ref="console-log" level="debug"/> 
     </Logger> 
     <Root level="info" additivity="false"> 
      <AppenderRef ref="console-log"/> 
     </Root> 
    </Loggers> 
</Configuration> 

J'ai réussi à obtenir des journaux écrits dans le dossier de mon tomcat logs.

Seuls certains de mes messages apparaissent. Je ne sais pas quels sont les symboles significatifs et ceux qui ne le sont pas.

La page de base des pages accessibles au public enregistre la sous-classe.

public class PublicBasePage extends WebPage 
{ 
    protected static final Logger logger = LogManager.getLogger(PublicBasePage.class); 

    public PublicBasePage() 
    { 
     super(); 

     logger.info(this.getClass().getName()); 
    } 
} 

[INFO] 19/10/2017 17: 07: 13,208 [http-nio-8080-exec-57] PublicBasePage - com.linguaclassica.access.HomePage La page de base pour le secteur privé les pages Web enregistrent un message.

public class PrivateBasePage extends WebPage 
{ 
    private static final Logger logger = LogManager.getLogger(PrivateBasePage.class); 

    public PrivateBasePage() 
    { 
     super(); 

     logger.debug("()"); 
    } 
} 

[Debug] 19/10/2017 17: 12: 05,662 [http-nio-8080-exec-62] PrivateBasePage -()

Cependant, les messages pour la page privée ne sont pas connectés à un fichier ou à la console.

public class ClientLandingPage extends PrivateBasePage 
{ 
    private static final Logger logger = LogManager.getLogger(ClientLandingPage.class); 

    public ClientLandingPage() 
    { 
     super();  

     logger.info("(info)"); 
     logger.debug("(debug)"); 
     logger.warn("(warn)"); 
    } 
} 

Je ne comprends pas ce qui échoue.

+0

. pouvez-vous les vérifier et les poster. – Acewin

+1

Dans quel paquet, 'ClientLandingPage' et d'autres classes sont présentes? –

+0

ClientLandingPage se trouve dans le dossier com.linguaclassica.client. Il existe trois autres dossiers pour les autres rôles d'utilisateur plus un pour les rôles partagés. – JoeAB

Répondre

0

OK, c'était négligent. ClientLandingPage est obsolète et n'a jamais été appelé, étant remplacé par shared/CommonOverviewPage. J'ai changé les déclarations à

private Logger logger = LogManager.getLogger(SomethingPage.class); 

et les journaux semblent sortir comme je les veux.

Les journaux d'hier ont la date ajoutée au nom de fichier. Lorsque votre application log4j charge ses paramètres, elle exécute un sysout de type