'회고'에 해당되는 글 2

  1. 2010.08.27 Tomcat 표준출력을 파일로 남기기
  2. 2010.02.02 잘못 전달된 예제소스

Tomcat 표준출력을 파일로 남기기

고객사에 모듈 업그레이드를 했는데 에러가 난다.
로그를 확인해야 하는데 로그가 없다.
클래스 로딩되는 상황을 확인해야 하는데 표준출력이 어디로 가는건지...

콘솔에서 starup.bat 를 실행시키거나 startup.bat 를 더블클릭해서 Tomcat을 시작하는 경우 표준출력이 콘솔에 출력되어서 지나간 로그를 확인하기가 힘들다.
(Tomcat 버전에 관계없이 당연한 현상임)


Tomcat이 새창으로 구동되어서 표준출력을 파일로 리다이렉션을 시켜도 파일이 제대로 남지 않는다.
로그가 많아서 필요한 로그는 새창에서 지나가 버림.
startup.bat, catalina.bat 를 이것저것 수정해도 안됨.

로그를 남기려면 새창을 띄우면 안됨.
새창을 띄우는 부분을 찾아서 수정하면 될거 같다.


또는
rem Execute Java with the applicable properties
if not "%JPDA%" == "" goto doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% > c:/tomcat.log
goto end

이렇게 하면 표준출력이 파일로 떨어진다.
(서비스로 구동시키면 stdout.log, stderr.log 가 생길거야.)

- 회고
운영되는 서버를 왜 이렇게 구동시키지? 우....띠
예전에 이런 문제가 발생했을때 확실히 분석해서 방법을 알아뒀으면 오늘같은 고생은 안했을건데.

로그보고 에러 잡는 일이 남았다. 이제부터 진짜 일이지.

잘못 전달된 예제소스

레거시 시스템과 연계하기 위해 Openquery를 사용.
Openquery에 익숙지 않은 개발자를 위해서 예제를 만들어서 배포
그런데 이 코드가 그대로 운영계에 반영되었다.
  1. 개발자는 아무런 의심없이 연결된 서버명을 테스트 서버로 했다. : 개발자의 자질 문제인가?[각주:1]
  2. 연결된 서버명이 테스트 환경과 운영 환경이 동일하면 문제가 생기지 않았을거다. : 갑자기 데이터베이스가 변경되면서 기존에 사용하면 서버명을 사용할수가 없어서 다른 이름으로 변경하였다.
  3. 예제를 배포할때 이런 사소한 것까지 고려를 해야 한다. : LEGACY_TEST가 아니라 LINKEDSERVER_NAME 이런식으로.
  1. 이 코드를 작성한 개발자와 사이가 안좋은 다른 개발자는 이 개발자의 자질을 의심했다. 연결된 서버명이 이상한 것을 보고 고민을 했어야 하지만 Openquery에 대한 기초 지식이 없는 경우 이런 실수가 일어날 수 있다. 개발자들이 실수할 수 있는 부분을 막고, 사전에 방지할수 있는 시스템이 필요하다. [본문으로]