programing

Eclipse 프로젝트에서 Log4j.properties를 넣을 올바른 위치는 어디에 있습니까?

nasanasas 2020. 12. 10. 20:29
반응형

Eclipse 프로젝트에서 Log4j.properties를 넣을 올바른 위치는 어디에 있습니까?


내 Eclipse 프로젝트에서 log4j.properties의도 한대로 작동하도록 파일을 추가해야 합니까?


프로젝트를 실행할 때 원하는 위치에 추가 할 수 있으며, 다음을 클릭하여 클래스 경로를 구성하고 log4j.properties 파일의 위치를 ​​추가 할 수 있습니다. 실행-> 구성 실행-> [클래스 경로 탭]-> 사용자 항목 클릭- > 고급-> 폴더 추가 선택-> log4j.properties 파일의 위치 선택

그런 다음-> 확인-> 실행

로드되어야합니다.


IMO가 가장 안전한 방법은 실행 / 디버그 구성의 파일을 가리키는 것입니다.

-Dlog4j.configuration=file:mylogging.properties

! 주의 : Eclipse 시작 구성을 사용할 때 file:프로토콜 사양 은 필수입니다.

이런 식으로 로거는 JDK의 기본 클래스 경로 나 기본 경로에있는 logging.properties를 포착하지 않습니다.

또한 더 풍부한 표현식 구문을 가지고 있고 더 많은 것을 허용하는 log4j.xml을 실제로 사용하는 것을 고려하십시오 (log4j.xml이 log4j.properties보다 우선합니다.


프로젝트의 런타임 클래스 경로에 log4j.properties 파일을 추가하십시오. 어떤 사람들은 이것을 소스 트리의 루트에 추가하여 컴파일 된 클래스의 루트에 복사됩니다.

편집 : 프로젝트가 maven 프로젝트 인 경우 log4j.properties를 src / main / resources 폴더 (및 단위 테스트 용 src / test / resources)에 넣을 수 있습니다.

여러 환경 (예 : 개발 및 프로덕션)이 있고 각 환경에 대해 다른 로깅을 원하며 동일한 jar (또는 war 또는 ear) 파일을 각 환경에 배포하려는 경우 (모든 환경에 대해 하나의 빌드에서와 같이) 다음을 저장합니다. jar 파일 외부의 log4j.properties 파일을 각 환경의 클래스 경로에 넣습니다 (환경별로 구성 가능). 역사적으로 저는 클래스 경로의 각 환경에 알려진 디렉토리를 포함하고 거기에 환경 특정 항목을 배포했습니다. 예를 들어 ~ tomcat_user / localclasspath입니다. 여기서 ~ tomcat_user는 내 war 파일이 배포 될 tomcat 인스턴스를 실행할 사용자의 홈 디렉토리입니다.


가장 좋은 방법은 이름이 지정된 특수 소스 폴더를 만들고 resourceslog4j.properties를 포함한 모든 리소스에 사용하는 것입니다. 그래서 거기에 두십시오.

Dynamic Web Project에 의해 자동으로 생성 된 Java Resources 폴더에서 마우스 오른쪽 버튼을 클릭하고 새 소스 폴더를 추가하고 이름을 'resources'로 지정합니다. 여기에있는 파일은 클래스 디렉토리의 war 파일로 내보내집니다.


라이브러리가 있고 log4j를 추가하려는 경우 :

  1. 프로젝트에서 "resources"라는 폴더를 만듭니다.
  2. log4j라는 .properties 파일을 만듭니다.
  3. log4j.properties 파일에서 속성 설정
  4. 프로젝트에서 오른쪽 버튼을 누르고 속성-> Java 빌드 경로로 이동 한 다음 마지막으로 "소스"탭으로 이동합니다.
  5. 폴더 추가를 누르고 1 단계에서 만든 "resources"폴더를 검색합니다.
  6. 끝.

(log4j 라이브러리가 추가되었다고 가정했습니다.)

PD : 영어로 죄송합니다.


이 질문은 이미 여기에서 답변 되었습니다.

클래스 경로에는 특정 파일이 포함되지 않습니다. 여기에는 디렉토리와 jar 파일이 포함됩니다. 따라서 해당 파일을 classpath.

Log4j속성은 (일반적으로) 앱 개발에 사용되지 않습니다 (Eclipse 자체를 디버깅하지 않는 한!). 따라서 실행 가능한 Java 앱 (응용 프로그램, WAR, EAR 등)을 빌드 Log4j하고 런타임 클래스 경로에 속성을 포함하려는 것은 무엇입니까?


log4j.properties런타임 클래스 경로에 넣으십시오 .

포럼 은 가능한 방법에 대한 몇 가지 게시물을 보여줍니다.


일반적으로 "res"또는 "resources"라는 특수 폴더에 이미 말했지만 웹 응용 프로그램의 경우 log4j.properties에는 ant 작업과 함께을 WEB-INF / classes 디렉토리에 복사합니다 . 파일을 보내는 것과 같습니다. src / 폴더의 루트에 있지만 일반적으로 전용 폴더에서 보는 것을 선호합니다.

Maven을 사용하면 일반적인 위치 src/main/resources는이 다른 게시물 에서 답변 한대로 폴더에 있습니다. 모든 자원이 루트 클래스 경로에 빌드가 갈 것입니다 (예를 들어 target/classes/)

강력한 로거를 원한다면 로거 파사드 인 slf4j 라이브러리살펴보고 뒤에있는 log4j 구현을 사용할 수도 있습니다.


log4j.properties 파일의 위치는 Eclipse 프로젝트 유형에 따라 다릅니다.

특히 Eclipse Dynamic Web Project의 경우 log4j.properties를 war 파일에 추가하는 것과 관련된 대부분의 답변은 특히 Tomcat / Apache의 경우 올바른 위치에 속성 파일을 실제로 추가하지 않습니다.

여기에 내 연구와 문제에 대한 해결책이 있습니다 (특히 Tomcat / Apache 6.0에서 실행되는 동적 웹 프로젝트의 경우).

  • Tomcat이 클래스를로드하는 방법에 대한이 기사를 참조하십시오. Java 용 일반 클래스 로더와 다릅니다. ( https://www.mulesoft.com/tcat/tomcat-classpath ) war 파일에서 WEB-INF / classes 및 WEB-INF / lib의 두 위치에서만 찾습니다.

  • 동적 웹 프로젝트의 경우 프로젝트를 클린 빌드 할 때마다이 디렉토리가 지워 지므로 build /../ classes 디렉토리에 .properties 파일을 저장하는 것은 현명하지 않습니다.

  • Tomcat은 WEB-INF / lib 위치에있는 .property 파일을 처리하지 않습니다.

  • Eclipse는 뷰에서 해당 디렉토리를 추상화하므로 src 디렉토리에 log4j.properties 파일을 저장할 수 없습니다.

  • 이 문제를 해결하기 위해 찾은 한 가지 방법은 빌드를 변경하고 결국 war 파일의 WEB-INF / classes 디렉토리에로드 될 추가 디렉토리를 추가하는 것입니다. 구체적으로 특별히....

(1) 프로젝트 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '새로 만들기'-> '폴더'를 선택합니다. 폴더 이름은 무엇이든 가능하지만이 경우 표준은 '자원'입니다. 새 폴더는 프로젝트의 루트 수준에 나타납니다.

(2) log4j.properties 파일을이 새 폴더로 이동합니다.

(3) 프로젝트를 다시 오른쪽 클릭하고 'Build-Path'-> 'Configure Build Path'를 선택합니다. '소스'탭을 선택합니다. '폴더 추가'버튼을 클릭합니다. 위의 (1) 단계에서 만든 새 폴더를 찾습니다. '확인'을 선택하십시오.

(4) eclipse Project Explorer보기로 돌아 가면 폴더가 이제 'Java Resources'영역으로 이동했습니다 (즉, Eclipse 프리젠 테이션 추상화로 인해 더 이상 루트에 있지 않음).

(5) 프로젝트를 정리하십시오.

(6) .properties 파일이 이제 war 파일의 WEB-INF / classes에 존재하는지 확인하려면 war 파일을 쉬운 위치로 내보내고 (프로젝트-> 내보내기-> War 파일을 마우스 오른쪽 버튼으로 클릭) 내용을 확인합니다. 이제 log4j.properties 파일이 WEB-INF / classes에 나타납니다.

(7) 프로젝트를 Tomcat / Apache로 승격하고 이제 log4j가 작동합니다.

Now that log4j works, start logging, solve world problems, take some time off, and enjoy a tasty adult beverage.


You do not want to have the log4j.properties packaged with your project deployable -- that is a bad idea, as other posters have mentioned.

Find the root Tomcat installation that Eclipse is pointing to when it runs your application, and add the log4j.properties file in the proper place there. For Tomcat 7, the right place is

${TOMCAT_HOME}/lib

참고URL : https://stackoverflow.com/questions/5081316/where-is-the-correct-location-to-put-log4j-properties-in-an-eclipse-project

반응형