Tomcat으로 서버에 반영할 때, 개발에서 사용한 Sysout을 최대한 안찍히게 하기 위해 소스에서 다 제거하기 바쁜데 이번 경우는 Sysout을 다 로그에 남기게 해야 하는 상황이었다.
개발소스가 없어서 에러발생시 원인분석도 어렵고 최대한 도움을 받기위해서 Sysout까지 남겨야 하는 아이러니 한 상황...
찾아보니 리눅스환경에서의 처리방법은 많이 나오는데 Window Server에서 처리방법은 많지 않았다.
첫번째 처리방법 데몬 동작
일단 제일 쉬운 방법은 톰캣 데몬(UI환경)으로 구동하는 방법이다.
logging탭에 보면 Redirect Stdout:
Redirect Stderror 부분이 보이는데 이부분이 auto면 자동으로 System.out.print로 처리된 부분들이 다 출력된다
위치는 LogPath를 수정해주면 된다.
반대로 아무것도 안나오게 하고싶으면 해당 부분을 비워주면 된다.
두번째 처리방법 .bat 동작시
데몬이 아니라 .bat파일로 동작해야 하는 경우
명령창으로 실행되는 .bat파일로 출력해야 하는 경우 Sysout 메시지들이 콘솔에 출력되고 있지만 로그파일로 남기지 않고 있을텐데, 설정을 변경해주면 로그파일로 출력시킬 수 있습니다.
${catalina.base}/conf/context.xml
<Context swallowOutput="true">
Context부분에 swallowOutput="true" 로 설정을 변경하고 저장합니다.
${catalina.base}/lib/log4j.properties
log4j.properties를 lib 디렉토리에 존재하지 않는다면 생성 후에 아래의 설정을 입력합니다.
log4j.rootLogger = INFO, CATALINA
# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
INFO, HOST-MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG
log4j.logger.org.apache.catalina.core=DEBUG
log4j.logger.org.apache.catalina.session=DEBUG
로그4 설정을 설정을 마치고 톰캣을 구동한 다음 확인을 해봅니다.
logs/localhost.일자.log를 열어보니 아래처럼 메시지가 출력되는걸 확인 할 수 있었습니다.
ps. /lib/log4j 설정파일은 꼬이지 않았다면 굳이 추가하지 않아도 쌓이고 있는걸 볼 수 있습니다.