2011-04-19 4 views
2

Tomcat6에 Liferay 설정이 있습니다. 필자는 log4j.properties 파일을 classes 폴더에 추가하고 log4j.jar 파일을 web-inf/lib에 추가하여 처음에 포틀릿/webapps에 Log4j를 사용했습니다.log4j with liferay and tomcat

이제 우리는 tomcat/lib 폴더에서 사용할 수있는 석영 작업이 거의 없으며 이러한 작업에 대해서도 log4j 로깅을 활성화하려고합니다.

이러한 석영 작업의 경우 tomcat/lib에 동일한 log4j.properties 파일을 복사했습니다.

Could not instantiate appender named "JOBS" 
A "org.apache.log4j.RollingFileAppender" is not assignable a "org.apache.log4j.Appender" variable. 
The class "org.apache.log4j.Appender" was loaded by ... 

방법이 오류를 제거 : 나는 다음과 같은 오류가 계속 새로운 구성으로

?

공유/lib뿐 아니라 portlet/webapps에서 사용할 수있는 단일 log4j.properties 파일을 유지할 수있는 방법이 있습니까?

답변

1

this post에 따르면 log4j를 두 번 구성한 것이 문제입니다.

내 솔루션이

private static Logger logger = Logger.getLogger(FooBar.class.getName());

같은 로거 인스턴스를 생성하고 LIB 또는 클래스 폴더 아래 log4j.properties을하지하지만 것 resources라는 이름의 폴더 아래에 그것을 가지고.

AFAIK 이것은 응용 프로그램의 두 부분이 모두 액세스 할 수있는 장소 여야합니다. 하는 Liferay에

+0

당신이 언급 한 'resources'폴더는 '[Portlet Dir]/docroot/WEB-IF/src'또는 다른 곳에 생성 된 새로운 폴더입니까? 또한 각 포틀릿에 'WEB-INF/lib'아래에 log4j.jar를 포함 시키시겠습니까? – yannicuLar

+1

http://www.mkyong.com/spring/quick-start-maven-spring-example/은 속성 파일 위치를 알려줍니다. http://www.liferay.com/web/brett.swaim/blog/-/blogs/using-log4j-to-ensure-each-portlet-has-it-s-own-log-file은 Liferay의 솔루션입니다. , 어떻게 든 나보다 다르지만 단지의 위치를 ​​알려줍니다. Liferay가 없으면 http://kaushalksinha.blogspot.fi/2009/10/adding-log4j-logging-to-portlet.html에 나와있는 것처럼 WEB-INF/lib에 넣을 수 있습니다. 희망이 더 많은 통찰력을 주었다. – mico

1

알려진 문제 : 내 경우 http://issues.liferay.com/browse/LPS-9376

는 문제는 내가 ServiceBuilder 서비스를 사용하기 시작 한 번 발생하고, 내 ... LocalServiceImpl 클래스 중 하나에 Log4J를 로거를 추가했습니다. 일단 Log4J 로깅을 제거하면 모든 것이 정상으로 돌아 왔고 예외가 사라졌습니다.

(서비스 메소드가 예외를 throw하고 ServiceBuilder 읽기/생성 클래스와 관련이없는 코드에서이를 catch하고 있지만 Log4J 로거 호출을 Liferay의 LogUtil 호출로 변경하여 수행 할 수도 있음).

+1

플러그인 환경에서 개발되지 않아 가능한 해결책이 될 수 없습니다. 그러나 대답을 주셔서 감사합니다. 그리고 이것은 다른 시간에 도움이 될 것입니다. – dhaval