주어진 기간 동안 지정된 excpetions 집합이 발생하면 관리자에게 전자 메일을 보내는 포틀릿을 개발하려고합니다. 필자는 appender를 추가하고 로깅 메커니즘을 통과하는 모든 메시지를 처리 할 수 있도록 liferay에서 루트 로거를 얻으려고합니다. 소스 코드를 살펴본 결과, liferay가 java.util.logging.LogManager를 사용하고있는 것으로 보입니다. 나는 서버가 시작할 때 시작되는 후크를 만들었다.Liferay, 루트 로거를 얻는 방법?
public void run(String[] ids) throws ActionException {
System.out.println("initializing");
LogListener listener = new LogListener();
listener.setLevel(Level.ALL);
listener.setFilter(null);
Logger.getGlobal().addHandler(listener);
_log.debug("complete");
}
그리고 LogListener 클래스
package pl.com.mds.portlet.mailing.hook;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
public class LogListener extends Handler {
@Override
public void publish(LogRecord record) {
System.out.println("publishing******");
}
@Override
public void flush() {
// TODO Auto-generated method stub
System.out.println("have to flush! *****");
}
@Override
public void close() throws SecurityException {
// TODO Auto-generated method stub
System.out.println("close meee!");
}
}
그러나 일부 예외가 발생했을 때 콘솔 publishing******
유일한 예외의 스택 트레이스에서 볼 수 없습니다 : 여기 내 run() 메소드이다. 응용 프로그램과 수신에 모든 로그를 가져올 수 있습니까? 감사합니다 :)
이상한. Liferay 문서에는 [log4j 사용] (https://web.liferay.com/community/wiki/-wiki/Main/How+to+configure+the+logs+in+Liferay/)이 사용된다고 나와 있습니다. – jmehrens