2012-10-24 3 views
0

누군가가 log4j를 사용하고 "constructor()이 보이지 않는다"라는 것을 알고 있습니까?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 클래스를 Main 클래스와 동일한 패키지에 배치 할 때 코드가 원하는대로 작동합니다.

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

하면 동일한 패키지로 배치하려고하면 오류 메시지가 사라지는 것입니다 : 클래스 - 다음은 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의 생성자를 public으로 변경합니다.

+0

Mea culpa. 감사 – kiltek