2012-10-24 57 views
0

有一些有關log4j的經驗並知道「構造函數()不可見的含義」?log4j記錄器不可見

下面是主類的代碼:

import org.apache.log4j.xml.DOMConfigurator; 
import stdGame.*; 
public class Main { 
    public static void main(String[] args) { 
     DOMConfigurator.configureAndWatch("data/log/myLoggerConfig.xml", 60*1000); 
     new LogTest(); 
    } 
} 

的LogTest級位於stdGame封裝,它已經導入,你可以看到。 將LogTest-Class放置在與Main-class相同的包中時,代碼可以按需要工作。 下面是LogTest()的代碼 - 類:

package stdGame; 
import org.apache.log4j.Logger; 
public class LogTest { 
    private static Logger logger = Logger.getLogger(LogTest.class); 
    LogTest() { 
     logger.info("My info-msg in LogTest."); 
     logger.error("My error-msg in LogTest."); 
    } 
} 

嘗試將它們放置到相同的軟件包,錯誤消息將會消失。但我需要把它們放入分離的包裝中。

最後,這是myLoggerConfig.xml文件:

<?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="MeinAppender" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="datePattern" value="'.'yyyy-MM-dd_HH-mm" /> 
    <param name="file" value="data/log/myLogfile.log" /> 
    <param name="Append" value="true" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c: %m%n" /> 
    </layout> 
    </appender> 
    <root> 
    <priority value="INFO" /> 
    <appender-ref ref="MeinAppender" /> 
    </root> 
    </log4j:configuration> 

回答

3

您的類LogTeststdName包,它的構造函數有package-private訪問。看起來Main類是在一些包中,而不是stdName,所以編譯器抱怨LogTest()的構造函數在Main的包中不可見。將LogTest的構造函數更改爲公共。

+0

Mea culpa。謝謝 – kiltek