Tomcat의 org/apache/catalina/startup/Bootstrap.java 파일을 수정하여, Tomcat 기동 시 원하는 문구와 일부 System Properties 정보를 로그에 출력하는 방법을 소개합니다.
이 방법은 Tomcat 실행 스크립트만 수정하는 것이 아니라 소스 파일을 변경한 뒤 다시 빌드하여 bootstrap.jar에 반영하는 방식입니다. 운영 환경에 적용하기 전에는 반드시 동일한 버전의 소스와 빌드 절차를 확인하고, 기존 파일을 백업해 두는 것이 좋습니다.
Bootstrap.java에 메시지 생성 메소드 추가
Bootstrap.java 내에 원하는 문자열을 만들어 반환하는 메소드를 생성합니다. 예시에서는 getCustomMessage()라는 이름으로 만들었습니다.
public static StringBuffer getCustomMessage() {
StringBuffer sb = new StringBuffer();
sb.append(System.getProperty("line.separator"));
sb.append("+-----------------------------------------------------------");
sb.append(System.getProperty("line.separator"));
sb.append("| Starting Tomcat Server for sarc.io");
sb.append(System.getProperty("line.separator"));
sb.append("| 2014-03-05, Rebuild by appsroot");
sb.append(System.getProperty("line.separator"));
sb.append("+-----------------------------------------------------------");
sb.append(System.getProperty("line.separator"));
sb.append("| Java class path = ");
sb.append(System.getProperty("java.class.path"));
sb.append(System.getProperty("line.separator"));
sb.append("| Java installation directory = ");
sb.append(System.getProperty("java.home"));
sb.append(System.getProperty("line.separator"));
sb.append("| Java Runtime Environment version = ");
sb.append(System.getProperty("java.version"));
sb.append(System.getProperty("line.separator"));
sb.append("+-----------------------------------------------------------");
return sb;
}
main()에서 메소드 호출
main() 메소드의 start 분기에서 위에서 만든 메소드를 호출하도록 로직을 추가합니다. 예시처럼 daemon.load(args)와 daemon.start()가 실행되기 전에 로그를 남기면, Tomcat 기동 로그에서 해당 정보를 확인할 수 있습니다.
} else if (command.equals("start")) {
log.info(getCustomMessage().toString());
daemon.setAwait(true);
daemon.load(args);
daemon.start();
} else if (command.equals("stop")) {
빌드 및 반영 확인
수정 후 다시 빌드하면 bootstrap.jar 파일이 업데이트됩니다. 업데이트된 bootstrap.jar를 Tomcat에 반영한 뒤 다시 기동하여 로그를 확인합니다.
정상적으로 반영되었다면 다음과 같이 지정한 문구와 Java 관련 System Properties가 출력됩니다.
Mar 04, 2014 5:38:27 PM org.apache.catalina.startup.Bootstrap main INFO: +----------------------------------------------------------- | Starting Tomcat Server for sarc.io | 2014-03-04, Rebuild by appsroot +----------------------------------------------------------- | Java class path = /home/tomcat/bin/bootstrap.jar:/home/tomcat/bin/tomcat-juli.jar | Java installation directory = /home/java/java7_51/jre | Java Runtime Environment version = 1.7.0_51 +-----------------------------------------------------------
확인 시에는 기동 로그에 변경한 문구가 출력되는지, java.class.path, java.home, java.version 값이 현재 실행 환경과 일치하는지 함께 점검하면 됩니다. 값이 보이지 않는다면 수정한 bootstrap.jar가 실제 Tomcat의 bin 디렉터리에 반영되었는지, 재기동한 인스턴스가 올바른 대상인지 확인합니다.