2017-10-19 227 views
0

理想情況下,我希望在開發過程中記錄本地主機上的所有內容,並僅在活動服務器上記錄錯誤。我無法登錄到我的開發平臺上的文件(Windows 10,帶Wicket的Java)。log4j2無法寫入文件

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> 

我設法得到了一些日誌寫到我的Tomcat的logs文件夾。

只有一些消息出現。我不知道什麼符號是重要的,哪些不符合。

可公開訪問的頁面的基頁記錄子類。

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 用於專用的基本頁網頁記錄一條消息。

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

    public PrivateBasePage() 
    { 
     super(); 

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

[調試] 2017年10月19日17:12:05.662 [HTTP-NIO-8080-EXEC-62] PrivateBasePage - (+)

然而,對於消息專用頁面不會記錄到文件或控制檯。

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

我不明白什麼是失敗。

+0

當您的應用程序log4j加載其設置時,它會執行一些sysout操作。你可以檢查它們併發布它們嗎? – Acewin

+1

在哪個包中,ClientLandingPage和其他類都存在? –

+0

ClientLandingPage位於文件夾com.linguaclassica.client中。其他用戶角色還有三個其他文件夾,另外一個用於共享角色。 – JoeAB

回答

0

好的,這是粗心的。 ClientLandingPage已過時,並且從未被調用,被共享/ CommonOverviewPage取代。我改變了聲明

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

和日誌似乎出來,因爲我想他們。

昨天的日誌有附加到文件名的日期。