2017-10-19 4 views
0

Idealerweise möchte ich alles während der Entwicklung auf einem lokalen Host protokollieren und nur Fehler auf dem Live-Server protokollieren. Ich habe Probleme beim Loggen in Dateien auf meiner Entwicklungsplattform (Windows 10, Java with Wicket).log4j2 kann nicht in Datei schreiben

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> 

ich es geschafft haben, einige Protokolle zu meinem Tomcats logs Ordner geschrieben werden.

Nur einige meiner Nachrichten werden angezeigt. Ich weiß nicht, welche Symbole wichtig sind und welche nicht.

Die Basisseite für öffentlich zugängliche Seiten protokolliert die Unterklasse.

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

    public PublicBasePage() 
    { 
     super(); 

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

[INFO] 2017.10.19 17: 07: 13,208 [http-nio-8080-exec-57] PublicBasePage - com.linguaclassica.access.HomePage Die Basisseite für den privaten Webseiten protokolliert eine Nachricht.

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

    public PrivateBasePage() 
    { 
     super(); 

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

[DEBUG] 2017.10.19 17: 12: 05,662 [http-NiO-8080-exec-62] PrivateBasePage -()

jedoch Nachrichten für Die private Seite wird nicht in einer Datei oder auf der Konsole protokolliert.

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)"); 
    } 
} 

Ich verstehe nicht, was scheitert.

+0

Wenn Ihre App log4j ihre Einstellungen lädt, führt sie einen Sysout aus. kannst du sie überprüfen und posten? – Acewin

+1

In welchem ​​Paket sind 'ClientLandingPage' und andere Klassen vorhanden? –

+0

ClientLandingPage befindet sich im Ordner com.linguaclassica.client. Es gibt drei weitere Ordner für andere Benutzerrollen und eine für freigegebene Rollen. – JoeAB

Antwort

0

OK, das war sorglos. ClientLandingPage ist veraltet und wurde nie aufgerufen und durch shared/CommonOverviewPage ersetzt. Ich änderte die Deklarationen zu

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

und die Protokolle scheinen zu kommen, wie ich sie will.

In den Protokollen von gestern wird das Datum an den Dateinamen angehängt.