[java] log4j.properties 파일을 어디에 두어야합니까?

glassfish v2.1과 함께 netbeans 6.7.1을 사용하여 웹 서비스 프로젝트를 작성하고 log4j.properties를 프로젝트의 루트 디렉토리에 넣고 다음을 사용하십시오.

static Logger logger = Logger.getLogger(MyClass.class);

생성자에서 :

PropertyConfigurator.configure("log4j.properties");

그리고 기능에서 :

logger.info("...");
logger.error("...");
// ...

그러나, 그것은 오류 정보입니다 (실제로, 나는 그것을 실현할 수있는 거의 모든 디렉토리에 넣으려고 노력했습니다) :

log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
        at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
        at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.

예제 프로젝트는 http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8 에서 얻을 수 있습니다 .



답변

나는이 질문에 대답하는 것이 약간 늦었고 이미 해결책을 찾았을 수도 있지만, 내가 많이 찾은 후에 찾은 해결책을 게시하고 있으므로 약간 도움이 될 수 있습니다.

  1. 이 스레드에서 이전에 언급 한대로 프로젝트의 WEB-INF \ classes 아래에 log4j.properties를 두십시오.
  2. WEB-INF \ lib 아래에 log4j-xx.jar을 넣으십시오.
  3. log4j 가로 드되었는지 테스트 : -Dlog4j.debugTomcat의 Java 옵션 끝에 @ 추가

이것이 도움이되기를 바랍니다.

rgds


답변

이미 언급했듯이 log4j.properties는 클래스 경로에 포함 된 디렉토리에 있어야합니다. 나는 mavenized 프로젝트에서 좋은 장소가 될 수 있다고 덧붙이고 싶습니다. src/main/resources/log4j.properties


답변

VM 인수 -Dlog4j.configuration = “file : / C : /workspace3/local/log4j.properties”를 사용하여 구성 파일 위치를 지정할 수 있습니다.


답변

실행 컨텍스트에 해당하는 루트 디렉토리에 저장해야합니다.

예:

    MyProject
       src
           MyClass.java
           log4j.properties

다른 프로젝트에서 실행을 시작하면 실행을 시작하는 데 사용 된 프로젝트에 해당 파일이 있어야합니다. 예를 들어, 다른 프로젝트에 일부 JUnit 테스트가있는 경우 log4j.properties 파일도 있어야합니다.


log4j.properties 대신 log4j.xml을 사용하는 것이 좋습니다. 더 많은 옵션이 있으며 IDE에서 도움을 받으십시오 …


답변

Maven 기반 프로젝트의 경우 src / main / resources에 log4j.properties를 유지하십시오. 할 일이 없습니다!


답변

src에 log4j.properties를 넣으면 다음 명령문을 사용할 필요가 없습니다.

PropertyConfigurator.configure("log4j.properties");

특성 파일이 클래스 경로에 있으면 자동으로 가져옵니다.


답변

시험:

PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));